Возможно ли сделать DependencyProperty типа коллекции, чтобы применялась OneWayToSource привязка?
Есть кастомный контрол. В нём есть DependencyProperty:
public IList MySelectedItems
{
get { return (IList)GetValue(MySelectedItemsProperty); }
set
{
if (value != null)
{
SetValue(MySelectedItemsProperty, value);
}
else
{
ClearValue(MySelectedItemsProperty);
}
}
}
public static readonly DependencyProperty MySelectedItemsProperty = DependencyProperty.Register(
"MySelectedItems", typeof(IList), typeof(MyGridControl), new PropertyMetadata(null));
который дополнительно инициализируется в конструкторе
public MyGridControl()
{
MySelectedItems = new ObservableCollectionCore<object>();
}
работа с ним ведется в обработчике события таким образом:
if (MySelectedItems != null)
{
MySelectedItems.Clear();
foreach (int index in OrderedSelection)
{
if ((bool)_selection[index])
{
MySelectedItems.Add(GetRowByListIndex(index));
}
}
MySelectedItemsCount = MySelectedItems.Count;
}
К нему в контексте привязано свойство, объявленное так:
private ObservableCollection<TestData> _selectedData = new ObservableCollection<TestData>();
public ObservableCollection<TestData> SelectedData
{
get { return _selectedData; }
set
{
_selectedData = value;
RaisePropertyChanged(nameof(SelectedData));
}
}
через привязку в xaml
<local:MyGridControl MySelectedItems="{Binding Path=SelectedData}" />
Всё это работает. Однако меня интересует вопрос, возможно ли каким-то образом изменить код так, чтобы в xaml применялась привязка:
MySelectedItems="{Binding Path=SelectedData, Mode=OneWayToSource}"
На данный момент, если я пытаюсь это сделать, то MySelectedItems инициализуруется null'ом. Почему так происходит и можно ли это изменить?