我有一个自定义用户控件(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是视图模型中的属性。
答案 0 :(得分:1)
您是否将DataContext
的{{1}}设置为某个地方?
尝试明确指定绑定的来源:
SliderControl