Estoy creando un control de usuario para mostrar un calendario de tres meses. El control se basa en el control Calendario de WPF (WPF Toolkit 2009-06) y deseo pasar varias de las propiedades del Calendario a las propiedades correspondientes de mi control de usuario. Las propiedades de control del usuario se configuran como Propiedades de dependencia, y sus tipos subyacentes coinciden con los tipos de las propiedades del Calendario. Aquí está mi marcado:WPF: Colección propiedad de dependencia "es de sólo lectura y no se puede ajustar desde el marcado"
<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>
Todas las propiedades se unen sin problemas, a excepción de la propiedad SelectedDates
. Obtuve el siguiente error en su enlace:
La propiedad 'SelectedDates' es de solo lectura y no se puede establecer desde el marcado.
Sospecho que es porque la propiedad SelectedDates
es una colección, pero no estoy seguro de cómo solucionar el problema. ¿Puede alguien aclararme la causa del problema y sugerir una solución? Gracias por tu ayuda.
Aquí es donde estoy desconcertado: Si estoy pasando el valor de, por ejemplo, a mi propiedad SlaveCalendar1 control de usuario, sólo estoy leyendo SlaveCalendar1.SelectedDates; Estoy escribiendo en MyUserControl.SelectedDates, que he definido con un setter. En otras palabras, MyUserControl.SelectedDates no es de solo lectura, y eso es a lo que le escribo. ¿Por qué eso no funciona? –
¿Cómo pasas SlaveCalendar1.SelectedDates a this.SelectedDates? Entiendo que lo está haciendo estableciendo el Modo de encuadernación en OneWayToSource. Parece que esta línea de código aún se interpreta como una tarea, para lo cual se necesita un setter. ¡Hay muchas soluciones! – Dabblernl
Entonces, si lo entiendo correctamente, no puedo enlazar una propiedad de solo lectura, incluso si el enlace es OneWayToSource; es decir, un enlace que solo se lee desde la propiedad de solo lectura. Gracias –