WPF依赖项属性绑定不起作用

时间:2017-02-28 16:37:42

标签: wpf data-binding

我有一个自定义用户控件(SliderControl.xaml),它由一个滑块控件和一些其他控件组成。用户控件具有滑块控件的Value属性的依赖项属性。

Params

我有一个窗口,它在StackPanel中使用我的自定义滑块控件,如下所示:

public static DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(double), typeof(SliderControl), new PropertyMetadata(50.0));

public double Value {
   get { return (double)GetValue(ValueProperty); }
   set { SetValue(ValueProperty, (double)value); }
}

这很好用。 Value依赖项属性中的'50'正确地将滑块控件设置为值50。

但是,我想要做的是将Value依赖项属性绑定到我的窗口当前绑定到的视图模型中公开的属性。

这是在我的窗口中设置的DataContext。

<StackPanel>
   <cl:SliderControl x:Name="valvePosUC" Minimum="0" Maximum="100" Title="Valve Position" Value="50" />
</StackPanel>

我希望绑定Value依赖项属性的视图模型(LRS_1920x1080VM)中的属性定义如下:

<Window.DataContext>
   <ViewModel:LRS_1920x1080VM/>
</Window.DataContext>

所以我希望能够做到这一点(请注意下面的值绑定):

private double _valvePos_SliderValue { get; set; }
public double ValvePos_SliderValue {
   get { return _valvePos_SliderValue; }
   set {
      _valvePos_SliderValue = value;
      OnPropertyChanged("ValvePos_SliderValue");
   }
}

但是,当我尝试像这样绑定Value依赖项属性时,它不起作用。我在输出中看到的错误是 -

System.Windows.Data错误:40:BindingExpression路径错误:'object'''SliderControl'(Name ='valvePosUC')'上找不到'ValvePos_SliderValue'属性。 BindingExpression:路径= ValvePos_SliderValue; DataItem ='SliderControl'(Name ='valvePosUC'); target元素是'SliderControl'(Name ='valvePosUC'); target属性为'Value'(类型'Double')

错误似乎表明它正在尝试在SliderControl中找到属性ValvePos_SliderValue,而不是它在哪里。 ValvePos_SliderValue是视图模型中的属性。

1 个答案:

答案 0 :(得分:1)

您是否将DataContext的{​​{1}}设置为某个地方?

尝试明确指定绑定的来源:

SliderControl