У меня есть пользовательский контроль. У меня есть свойство зависимости.
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 со свойством MySelectedItems
<local:MyGridControl MySelectedItems="{Binding Path=SelectedData}" />
Этот код работает нормально. MySelectedItems и SelectedData всегда равны по содержанию. Но у меня есть вопрос. Можно ли каким-то образом изменить мой код для использования привязки OneWayToSource?
MySelectedItems="{Binding Path=SelectedData, Mode=OneWayToSource}"
В настоящее время, если я пытаюсь это сделать, MySelectedItems инициализируется нулем. Почему? И возможно ли изменить это поведение?