WPF:集合依赖项属性“是只读的,不能从标记设置”

时间:2010-01-27 14:44:14

标签: wpf wpf-controls dependency-properties readonly

我正在创建一个用户控件来显示一个三个月的日历。该控件基于WPF日历控件(WPF Toolkit 2009-06),我想将几​​个Calendar的属性传递给我的用户控件的相应属性。用户控件属性设置为依赖项属性,其基础类型与日历属性的类型匹配。这是我的标记:

<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>

SelectedDates属性外,所有属性绑定都没有问题。我的绑定出现以下错误:

'SelectedDates'属性是只读的,无法通过标记设置。

我怀疑是因为SelectedDates属性是一个集合,但我不知道如何解决这个问题。任何人都可以启发我的问题的原因,并建议修复?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

如果我理解你,你的代码后面的代码中有依赖属性,并且在用户控件中键入日历控件的属性。您正尝试将各种Calendar控件的SelectedDates集合分配给代码中的同名Dependency属性。

您可以通过一行代码完成此操作:

this.SelectedDates=SlaveCalendar1.SelectedDates

在添加选定日期时触发的相应EventHandler中。

即使您将绑定设置为OneWayToSourceSelectedDates=段代码也是一项任务。由于SelectedDates属性没有setter,因此无法编写这段代码。

Here您可以找到日历控件文档的链接