我正在創建一個用戶控件來顯示三個月的日曆。該控件基於WPF日曆控件(WPF Toolkit 2009-06),並且我想將幾個Calendar的屬性傳遞給我的用戶控件的相應屬性。用戶控件屬性設置爲依賴屬性,它們的基礎類型與日曆屬性的類型相匹配。這裏是我的標記:WPF:集合依賴屬性「是隻讀的,不能從標記中設置」
<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
屬性是一個集合,但我不知道如何解決該問題。任何人都可以啓發我的問題的原因,並提出修復?謝謝你的幫助。
這裏就是我困惑:如果我傳遞的價值,比如說,從SlaveCalendar1給我的用戶控件的屬性,我只是讀SlaveCalendar1.SelectedDates;我正在寫MyUserControl.SelectedDates,這是我用setter定義的。換句話說,MyUserControl.SelectedDates不是隻讀的,這就是我寫的。爲什麼這不起作用? – 2010-01-27 18:41:47
你如何將SlaveCalendar1.SelectedDates傳遞給this.SelectedDates?我知道你正在通過將綁定模式設置爲OneWayToSource來完成它。看起來,這行代碼仍然被解釋爲一個任務,但你需要一個setter。有很多解決方法! – Dabblernl 2010-01-27 19:03:49
因此,如果我理解正確,即使綁定是OneWayToSource,我也無法綁定只讀屬性;也就是隻能從只讀屬性中讀取的綁定?謝謝 – 2010-01-27 20:30:19