"잘못된"방향으로 데이터를 바인딩 할 수 있습니까? 내 ViewModel에 바인딩 된 사용자 정의 컨트롤의 값을 원합니다. "OneWayToSource"모드로 바인딩을 시도했지만 제대로 작동하지 않습니다.WPF MVVM ViewModel에 대한 사용자 정의 컨트롤 바인딩 목록
시나리오 (단순)
가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;
}
컨트롤이 조작하는 코드를 포함
난 문자열 목록은 종속성 속성이 지정 컨트롤 (MyCustomControl)가 명부.
나는이 사용자 지정 컨트롤을 ViewModel이있는 UserControl에서 사용합니다.
public List<string> MyStringsInTheViewModel
{
get
{
return _myStringsInTheViewModel;
}
set
{
if (value != _myStringsInTheViewModel)
{
_myStringsInTheViewModel = value;
OnPropertyChanged("MyStringsInTheViewModel");
}
}
}
private List<string> _myStringsInTheViewModel;
가 지금은 목록이 변경 될 때 수 있도록 내 뷰 모델 (MyStringsInTheViewModel)의 목록에 내 사용자 지정 컨트롤 (MyStringList)의 목록을 바인딩 할 : 뷰 모델은 문자열 목록도하는 속성이 있습니다 또한 사용자 정의 컨트롤에서 ViewModel에서도 변경됩니다. 나는
<myns:MyCustomControl MyStringList="{Binding Path=MyStringsInTheViewModel, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}">
가 어떻게 이러한 바인딩을 만들 수 있습니다 ...이 시도했지만이 동작하지 않습니다?
왜 'OneWayToSource'를 사용하고 있습니까? 나는'Mode'와'UpdateSourceTrigger'를 제거하는 것이 바인딩이 작동하기에 충분할 것이라고 생각합니다. –