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

Dav*_*man 9 wpf dependency-properties readonly wpf-controls

我正在创建一个用户控件来显示一个三个月的日历.该控件基于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>
Run Code Online (Sandbox Code Playgroud)

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

'SelectedDates'属性是只读的,不能通过标记设置.

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

Dab*_*rnl 2

如果我很了解您,那么您的代码中具有与名称匹配的依赖项属性,并在用户控件中键入日历控件的属性。您正在尝试将各种日历控件的 SelectedDates 集合分配给后面的代码中同名的 Dependency 属性。

您可以简单地通过一行代码来完成此操作:

this.SelectedDates=SlaveCalendar1.SelectedDates

在添加选定日期时触发的适当事件处理程序中。

即使您将绑定设置OneWayToSource为该SelectedDates=代码段也是一个赋值。由于 SelectedDates 属性没有设置器,因此无法编写这段代码。

在这里您可以找到日历控件文档的链接

  • 因此,如果我理解正确的话,我无法绑定只读属性,即使绑定是 OneWayToSource;也就是说,仅从只读属性读取的绑定?谢谢 (3认同)