我的老板下载了一个我必须在app中使用的xaml控件。它看起来还不错,但是内部逻辑存在一个奇怪的问题 -
属性CurrentColor
(我需要在我们的应用中使用)在control.xaml.cs
文件中定义,如:
public SolidColorBrush CurrentColor
{
get { return (SolidColorBrush)GetValue(CurrentColorProperty); }
set
{
SetValue(CurrentColorProperty, value);
ActiveColor = CurrentColor;
}
}
我在对话框中使用此控件(具有自己的视图模型类)和 我正在写这种约束力:
CurrentColor="{Binding myOwnViewModel.ColorActualValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}">
myOwnViewModel.cs
中的(实现INotifyPropertyChanged
)我有我的属性
public SolidColorBrush ColorActualValue{ // here is some logic}
但是当我调试应用程序时,我从未定位过我的CurrentColor - 我总是从CurrentColor
control.xaml.cs
如何从我的ViewModel
也许这是因为(control.xaml.cs):
public static DependencyProperty CurrentColorProperty =
DependencyProperty.Register("CurrentColor", typeof(SolidColorBrush), typeof(ColorPickerComboBox), new PropertyMetadata(Brushes.Chocolate));
public static RoutedEvent ActiveColorChangedEvent = EventManager.RegisterRoutedEvent("ActiveColorChanged",
RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(ColorPickerComboBox));
我在此控件的构造函数中找到了问题What's wrong with "DataContext = this" in WPF user controls?并删除了DataContext = this;
- 但这仍然没有帮助
答案 0 :(得分:0)
绑定应该是这样吗?
CurrentColor="{Binding ColorActualValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}">
您对话框的DataContext
'需要是包含ColorActualValue
属性
public Dialog()
{
DataContext = new myOwnViewModel();
}