Возможно ли связать данные в «неправильном» направлении? Я хочу, чтобы значение в пользовательском элементе управления было привязано к моей модели представления. Я пытался связать с режимом "OneWayToSource", но я не могу заставить его работать.
Сценарий (упрощенно):
У меня есть пользовательский элемент управления (MyCustomControl), который имеет свойство зависимости, представляющее собой список строк:
public class MyCustomControl : Control
{
static MyCustomControl()
{
//Make sure the template in Themes/Generic.xaml is used.
DefaultStyleKeyProperty.OverrideMetadata(typeof (MyCustomControl), new FrameworkPropertyMetadata(typeof (MyCustomControl)));
//Create/Register the dependency properties.
CheckedItemsProperty = DependencyProperty.Register("MyStringList", typeof (List<string>), typeof (MyCustomControl), new FrameworkPropertyMetadata(new List<string>()));
}
public List<string> MyStringList
{
get
{
return (List<string>)GetValue(MyCustomControl.MyStringListProperty);
}
set
{
var oldValue = (List<string>)GetValue(MyCustomControl.MyStringListProperty);
var newValue = value;
SetValue(MyCustomControl.MyStringListProperty, newValue);
OnPropertyChanged(new DependencyPropertyChangedEventArgs(MyCustomControl.MyStringListProperty, oldValue, newValue));
}
}
public static readonly DependencyProperty MyStringListProperty;
}
Элемент управления также содержит код для управления этим списком.
Я использую этот пользовательский элемент управления в UserControl, который имеет ViewModel. ViewModel имеет свойство, которое также является списком строк:
public List<string> MyStringsInTheViewModel
{
get
{
return _myStringsInTheViewModel;
}
set
{
if (value != _myStringsInTheViewModel)
{
_myStringsInTheViewModel = value;
OnPropertyChanged("MyStringsInTheViewModel");
}
}
}
private List<string> _myStringsInTheViewModel;
Теперь я хочу связать список в моем пользовательском элементе управления (MyStringList) со списком в моей ViewModel (MyStringsInTheViewModel), чтобы при изменении списка в пользовательском элементе управления он также изменялся в ViewModel. Я пробовал это, но не могу заставить его работать ...
<myns:MyCustomControl MyStringList="{Binding Path=MyStringsInTheViewModel, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}">
Как сделать такую привязку?