2010-01-27 13 views
8

Tôi đang tạo điều khiển người dùng để hiển thị lịch ba tháng. Điều khiển dựa trên điều khiển Lịch WPF (WPF Toolkit 2009-06) và tôi muốn chuyển một số thuộc tính của Lịch thông qua các thuộc tính tương ứng của điều khiển người dùng của tôi. Thuộc tính điều khiển người dùng được thiết lập dưới dạng Thuộc tính phụ thuộc và các loại cơ bản của chúng khớp với các loại thuộc tính Lịch. Dưới đây là đánh dấu của tôi:WPF: Thuộc tính phụ thuộc của bộ sưu tập "là chỉ đọc và không thể được đặt từ đánh dấu"

<StackPanel> 
    <toolkit:Calendar Name="MasterCalendar" 
     SelectionMode="{Binding Path=SelectionMode, Mode=OneWay}" 
     SelectedDate="{Binding Path=SelectedDate, Mode=OneWayToSource}" 
     SelectedDates="{Binding Path=SelectedDates, Mode=OneWayToSource}"/> 
    <toolkit:Calendar Name="SlaveCalendar1" 
     DisplayDate="{Binding DisplayDate, Converter={StaticResource IncrementalMonthConverter}, ElementName=MasterCalendar, Mode=OneWay}" 
     SelectionMode="{Binding Path=SelectionMode, Mode=OneWay}" 
     SelectedDate="{Binding Path=SelectedDate, Mode=OneWayToSource}" 
     SelectedDates="{Binding Path=SelectedDates, Mode=OneWayToSource}"/> 
    <toolkit:Calendar Name="SlaveCalendar2" 
     DisplayDate="{Binding DisplayDate, Converter={StaticResource IncrementalMonthConverter}, ElementName=SlaveCalendar1, Mode=OneWay}" 
     SelectionMode="{Binding Path=SelectionMode, Mode=OneWay}" 
     SelectedDate="{Binding Path=SelectedDate, Mode=OneWayToSource}" 
     SelectedDates="{Binding Path=SelectedDates, Mode=OneWayToSource}"/> 
</StackPanel> 

Tất cả các thuộc tính ràng buộc mà không vấn đề, trừ SelectedDates tài sản. Tôi nhận được lỗi sau về ràng buộc của nó:

Thuộc tính 'SelectedDates' là chỉ đọc và không thể được đặt từ đánh dấu.

Tôi nghi ngờ rằng đó là vì thuộc tính SelectedDates là một bộ sưu tập, nhưng tôi không chắc chắn cách khắc phục sự cố. Bất cứ ai có thể khai sáng cho tôi về nguyên nhân của vấn đề và đề nghị sửa chữa? Cảm ơn bạn đã giúp đỡ.

Trả lời

2

Nếu tôi hiểu rõ bạn, bạn có các thuộc tính phụ thuộc trong mã của bạn đằng sau đối sánh đó trong tên và nhập thuộc tính của Điều khiển lịch trong điều khiển người dùng của bạn. Bạn đang cố gắng chỉ định Bộ sưu tập SelectedDates của các Điều khiển Lịch khác nhau cho thuộc tính Phụ thuộc cùng tên trong mã của bạn phía sau.

Bạn chỉ có thể làm điều này bằng một dòng mã:

this.SelectedDates=SlaveCalendar1.SelectedDates

Trong một EventHandler thích hợp sẽ kích hoạt khi một ngày đã chọn được thêm vào.

Mặc dù bạn đặt ràng buộc thành OneWayToSource đoạn mã SelectedDates= là một bài tập. Do Thuộc tính SelectedDates không có setter, nên không thể viết đoạn mã này.

Here bạn có thể tìm thấy một liên kết đến tài liệu Lịch kiểm soát của

+0

Đây là nơi tôi đang bối rối: Nếu tôi đi qua các giá trị từ, nói, SlaveCalendar1 đến tài sản điều khiển người dùng của tôi, tôi chỉ đang đọc SlaveCalendar1.SelectedDates; Tôi đang viết cho MyUserControl.SelectedDates, mà tôi đã xác định với một setter. Nói cách khác, MyUserControl.SelectedDates không phải là chỉ đọc, và đó là những gì tôi đang viết. Tại sao nó không hoạt động? –

+0

Làm thế nào để bạn vượt qua SlaveCalendar1.SelectedDates đến this.SelectedDates? Tôi hiểu rằng bạn đang thực hiện nó thông qua việc thiết lập Chế độ ràng buộc thành OneWayToSource. Có vẻ như dòng mã này vẫn được hiểu là một bài tập, mặc dù bạn cần một setter. Có rất nhiều cách giải quyết! – Dabblernl

+1

Vì vậy, nếu tôi hiểu chính xác, tôi không thể ràng buộc thuộc tính chỉ đọc, ngay cả khi ràng buộc là OneWayToSource; đó là một ràng buộc chỉ đọc từ thuộc tính chỉ đọc? Cảm ơn –