wpf:从UserControl绑定到主窗口上的样式属性

wpf:从UserControl绑定到主窗口上的样式属性,wpf,Wpf,我有一个UserControl,它有一个样式,我希望受宿主我的用户控件的主窗口上的设置复选框的影响 所以myControl.xaml有一个样式,我希望有一个触发器,它应该在MainWindow.xaml中观察一个复选框 我知道这样做的一种方法是在myControl.cs中创建一个本地属性,该属性将查看MainWindow.cs中的属性,而MainWindow.cs将返回cheeckbox的状态。。但也许有一种方法可以做到这一点,即不编写任何c代码 您应该将主窗口中的复选框绑定到“视图模型”对象的

我有一个UserControl,它有一个样式,我希望受宿主我的用户控件的主窗口上的设置复选框的影响

所以myControl.xaml有一个样式,我希望有一个触发器,它应该在MainWindow.xaml中观察一个复选框


我知道这样做的一种方法是在myControl.cs中创建一个本地属性,该属性将查看MainWindow.cs中的属性,而MainWindow.cs将返回cheeckbox的状态。。但也许有一种方法可以做到这一点,即不编写任何c代码

您应该将主窗口中的复选框绑定到“视图模型”对象的属性。在UserControl的触发器中,绑定到同一“视图模型”对象的相同属性

如果将“视图模型”对象设置为主窗口的DataContext,则它也将在UserControl中可用

在主窗口中:

<CheckBox Content="Click here if you are happy"
          IsChecked="{Binding UserIsHappy}" />

在UserControl中:

<Style>
  ...
  <DataTrigger Binding="{Binding UserIsHappy}" Value="True">
    ... custom changes for happy people here ...

...
... 为快乐的人们定制的改变。。。

如何设置视图模型对象?最常用的方法是在主窗口的构造函数中设置应用程序的主视图模型:
DataContext=new MyViewModel()