Ich erstelle ein Benutzersteuerelement, um einen dreimonatigen Kalender anzuzeigen. Das Steuerelement basiert auf dem WPF-Kalendersteuerelement (WPF Toolkit 2009-06), und ich möchte mehrere Eigenschaften des Kalenders durch entsprechende Eigenschaften meines Benutzersteuerelements übergeben. Die Benutzersteuerungseigenschaften sind als Abhängigkeitseigenschaften eingerichtet und ihre zugrunde liegenden Typen entsprechen den Typen der Kalendereigenschaften. Hier ist mein Markup:WPF: Auflistungsabhängigkeitseigenschaft "ist schreibgeschützt und kann nicht aus Markup festgelegt werden"
<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>
Alle Eigenschaften problemlos binden, mit Ausnahme der SelectedDates
Eigenschaft. Ich erhalte den folgenden Fehler bei der Bindung:
'SelectedDates' Eigenschaft ist schreibgeschützt und kann nicht aus Markup festgelegt werden.
Ich vermute, dass es ist, weil die SelectedDates
Eigenschaft eine Sammlung ist, aber ich bin mir nicht sicher, wie Sie das Problem beheben. Kann mir jemand die Ursache des Problems erklären und eine Lösung vorschlagen? Danke für Ihre Hilfe.
Hier zu finden ist, wo ich bin verwirrt: Wenn ich den Wert von bin vorbei, sagen sie, SlaveCalendar1 meine Benutzersteuer Eigenschaft, ich bin nur SlaveCalendar1.SelectedDates zu lesen; Ich schreibe in MyUserControl.SelectedDates, die ich mit einem Setter definiert habe. Mit anderen Worten, MyUserControl.SelectedDates ist nicht schreibgeschützt, und darum schreibe ich. Warum funktioniert das nicht? –
Wie gibst du die SlaveCalendar1.SelectedDates an diese. SelectedDates? Ich verstehe, dass Sie es tun, indem Sie den Bindungsmodus auf OneWayToSource einstellen. Es scheint, dass diese Codezeile immer noch als eine Zuweisung interpretiert wird, für die Sie einen Setter benötigen. Es gibt viele Problemumgehungen! – Dabblernl
Also, wenn ich richtig verstehe, kann ich eine schreibgeschützte Eigenschaft nicht binden, auch wenn die Bindung OneWayToSource ist; eine Bindung, die nur aus der schreibgeschützten Eigenschaft liest? Vielen Dank –