2010-06-15 53 views
1

我有具有风格用户控件,我想可以通过设置复选框在主窗口中托管我的用户控制WPF:绑定到主窗口的样式属性的用户控件

所以myControl影响。 xaml有一个样式,我想有一个触发器,应该观察MainWindow.xaml中的复选框

我知道一种方法来做到这一点,将创建myControl.cs中的本地属性,它会看看MainWindow.cs中的属性,这反过来会返回该cheeckbox的状态..但也许有办法做到这一点不写出任何C#代码?

回答

0

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

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

在主窗口:

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

在用户控件:

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

如何设置视图模型对象? – 2010-06-16 02:49:28

+0

最常见的方法是在主窗口的构造函数中设置应用程序的主视图模型:'DataContext = new MyViewModel();' – 2010-06-16 03:06:40

相关问题