2012-09-01 144 views
1

我对绑定到WPF的祖先属性有疑问。我的情况是:我的窗口有一个视图模型作为数据上下文,所有的命令都是ICommand属性。我有一个复选框列表如下:WPF命令绑定到祖先属性

<ItemsControl ItemsSource="{Binding CurrentCustomer.SuppiersSelection}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <CheckBox FontSize="16" Content="{Binding Path=Supplier.Company}" 
         IsChecked="{Binding Path=Selected}"></CheckBox> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

的问题是:我想每个复选框绑定了一个命令,这样,当一个供应商被选中或取消选中客户和供应商之间的关系被自动保存。我的问题是,命令属性是在窗口数据上下文和这个复选框使用ItemControl的ItemSource作为数据上下文。我如何绑定到Window Data Context上的属性?

在此先感谢您的帮助。

回答

3
{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataContext} 

但目前还不清楚是什么任务。 为什么不使用双向绑定并处理选择的属性更改?

+0

嗨voroninp,对不起,如果我以一种奇怪的方式做到这一点,我完全不熟悉WPF和MVVM。那么我可以直接处理直接从视图模型中选择的属性更改?你能告诉我该怎么做,或者我可以在哪里读到有关此事的信息?我认为直接处理这一变化的唯一方法是使用后面的代码。非常感谢您回答我的问题。 – user1620696

+0

这很简单。绑定有模式:OneWay,OneWayToSource和TwoWay。当您将绑定视图的TwoWay.State设置回源属性时。所以你可以在ViewModel的属性设置器中提供需要的逻辑。命令用于按钮点击等操作。 –