Я создаю пользовательский элемент управления для отображения трехмесячного календаря. Управление основано на Календарном управлении WPF (Инструментарий WPF 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>
Все свойства связывают без проблемы, за исключением SelectedDates
свойство. Я получаю следующую ошибку на ее привязке:
Свойство 'SelectedDates' только для чтения и не может быть установлено от разметки.
Я подозреваю, что это потому что SelectedDates
свойство является набором, но я не уверен, как решить проблему. Кто-либо может просветить меня на причине проблемы и предложить фиксацию?Спасибо за помощь.
Если я вас хорошо понимаю, у вас в коде есть свойства зависимостей, которые совпадают по названию, и введите свойства Календаря управления в вашем пользовательском управлении. Вы пытаетесь назначить коллекцию SelectedDates различных элементов управления календаря одноименному свойству Dependency в своем коде позади него.
Это можно сделать с помощью строки кода:
this.SelectedDates=SlaveCalendar1.SelectedDates
В соответствующем EventHandler, который срабатывает при добавлении выбранной даты.
Даже если установить привязку к OneWayToSource
, часть кода SelectedDates=
является присваиванием. Поскольку свойство SelectedDates не имеет сеттера, написать этот фрагмент кода невозможно.
Здесь можно найти ссылку на документацию Календарного управления
.