2010-01-27 535 views
8

我正在創建一個用戶控件來顯示三個月的日曆。該控件基於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屬性是一個集合,但我不知道如何解決該問題。任何人都可以啓發我的問題的原因,並提出修復?謝謝你的幫助。

回答

2

如果我理解得很好,那麼您的代碼中的名稱中包含依賴屬性,並在用戶控件中鍵入日曆控件的屬性。您正試圖將各種日曆控件的SelectedDates集合分配給代碼中相同名稱的Dependency屬性。

只需通過一行代碼做到這一點:

this.SelectedDates=SlaveCalendar1.SelectedDates

在時將觸發加選擇的日期適當的事件處理程序。

即使您將綁定設置爲OneWayToSourceSelectedDates=這段代碼也是一項分配。由於SelectedDates屬性沒有setter,因此不可能編寫這段代碼。

Here,你可以找到一個鏈接到Calendar控件的文檔

+0

這裏就是我困惑:如果我傳遞的價值,比如說,從SlaveCalendar1給我的用戶控件的屬性,我只是讀SlaveCalendar1.SelectedDates;我正在寫MyUserControl.SelectedDates,這是我用setter定義的。換句話說,MyUserControl.SelectedDates不是隻讀的,這就是我寫的。爲什麼這不起作用? – 2010-01-27 18:41:47

+0

你如何將SlaveCalendar1.SelectedDates傳遞給this.SelectedDates?我知道你正在通過將綁定模式設置爲OneWayToSource來完成它。看起來,這行代碼仍然被解釋爲一個任務,但你需要一個setter。有很多解決方法! – Dabblernl 2010-01-27 19:03:49

+1

因此,如果我理解正確,即使綁定是OneWayToSource,我也無法綁定只讀屬性;也就是隻能從只讀屬性中讀取的綁定?謝謝 – 2010-01-27 20:30:19