ฉันกำลังดิ้นรนเพื่อหาวิธีแก้ปัญหาสำหรับเรื่องนี้ การควบคุม wpf datepicker มาตรฐานมีคุณสมบัติ BlackoutDates ซึ่งปิดใช้งานวันที่ในอดีต ฉันต้องการใช้ฟังก์ชันประเภทนี้สำหรับการควบคุม Wpf xceed datetimepicker แต่ไม่รู้ทำอย่างไร สิ่งที่ฉันต้องการจัดการคือปิดการใช้งานวันที่ในอดีตที่จะเลือกเมื่อ datetimepicker ตั้งค่าบางอย่าง มีความคิดอะไรบ้าง?
Wpf xceed datetimepicker วันที่ดับ
คำตอบ (2)
เนื่องจาก BlackoutDates
ไม่สามารถใช้งานได้ตามค่าเริ่มต้น คุณจะต้องแก้ไข Xceed DateTimePicker ทำความเข้าใจวิธีการประกอบการควบคุมก่อนโดยการอ่าน ที่นี่
ถัดไป โปรดสังเกตว่า DateTimePicker มี Calendar
จากนั้น ให้สังเกตเอกสารนี้
จากสิ่งที่ฉันเข้าใจ คุณจะต้องสร้างคุณสมบัติการพึ่งพาสำหรับการควบคุมที่รับการรวบรวม DateTime บางประเภท ในการเรียกกลับของการตั้งค่า porperty คุณจะต้องการนำแต่ละรายการในคอลเลกชัน และเพิ่มลงในคอลเลกชัน PART_Calendar.BlackoutDates
โปรดทราบ เนื่องจาก BlackoutDates เป็นแบบอ่านอย่างเดียว คุณไม่สามารถทำให้ DP ของคุณเป็นประเภท CalendarBlackoutDatesCollection
และเพียงตั้งค่า BlackoutDates
ในการโทรกลับ คุณต้องเพิ่มแต่ละวันที่ลงในคอลเลกชันของปฏิทินด้วยตนเองแทน
โดยไม่ต้องเปลี่ยนซอร์สโค้ดจริงของชุดเครื่องมือ xceed (ซึ่งใช้งานได้จริง) และแก้ไขส่วนปฏิทิน สิ่งที่ดีที่สุดถัดไปคือการเพิ่มกฎการตรวจสอบลงในกล่องข้อความของตัวควบคุม
public class YearValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
DateTime date = value as DateTime;
if (date == null)
return new ValidationResult(false, "Chosen date cannot be null.");
if(BlackoutDatesDates.Contains(date))
return new ValidationResult(false, "This date is blacked out.");
return ValidationResult.ValidResult;
}
}