我希望在我的wpf应用程序中使用一个颜色选择器,我在这个codeproject页面上看到了一个漂亮的颜色选择器。这个控件一直工作正常,直到我想将控件连接到视图模型。 我创建了一个包含此视图模型的小测试程序:
public class ColorViewModel : ViewModelBase
{
public ColorViewModel()
{
LineColor = Brushes.Yellow;
}
SolidColorBrush _brushColor;
public SolidColorBrush LineColor
{
get { return _brushColor; }
set
{
_brushColor = value;
RaisePropertyChanged(() => LineColor);
}
}
}
测试程序有文本框和颜色选择器控件:
<StackPanel Orientation="Horizontal">
<TextBlock Text="Please Select a Color" FontWeight="Bold" Margin="10"
Foreground="{Binding Path=LineColor, UpdateSourceTrigger=PropertyChanged}"/>
<vw:ColorPickerControlView x:Name="ForeColorPicker" Margin="10"
CurrentColor="{Binding Path=LineColor, UpdateSourceTrigger=PropertyChanged }"/>
</StackPanel>
在我的测试应用程序的主窗口的加载事件中,我将视图模型设置为数据上下文,如下所示:
DataContext = new ColorViewModel();
问题在于我似乎无法将视图模型的LineColor属性绑定到ColorPickerControlView的CurrentColor属性。ColorPickerControlView的CurrentControl属性似乎没问题。构造函数如下:
public ColorPickerControlView()
{
this.DataContext = this;
InitializeComponent();
CommandBindings.Add(new CommandBinding(SelectColorCommand, SelectColorCommandExecute));
}
在UserControl的构造函数中,有一行代码 this.DataContext = this;。我了解到这是绑定依赖属性所必需的。当我将我的ViewModel设置为DataContext时,是否需要覆盖此行代码?这就是为什么我无法绑定到CurrentColor属性的原因吗?是否有任何解决方法?或者我犯了其他错误?