将控制绑定到另一个属性

时间:2015-07-28 12:07:12

标签: c# wpf xaml

我的老板下载了一个我必须在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; - 但这仍然没有帮助

1 个答案:

答案 0 :(得分:0)

绑定应该是这样吗?

CurrentColor="{Binding ColorActualValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}">

您对话框的DataContext'需要是包含ColorActualValue属性

的ViewModel类
public Dialog()
{
    DataContext = new myOwnViewModel();
}