C# WPF命令绑定到祖先属性

C# WPF命令绑定到祖先属性,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我对绑定到WPF中的祖先属性有疑问。我的情况是:我的窗口有一个视图模型作为数据上下文,所有命令都作为ICommand属性。我有一个复选框列表,如下所示: <ItemsControl ItemsSource="{Binding CurrentCustomer.SuppiersSelection}"> <ItemsControl.ItemTemplate> <DataTemplate> <CheckBox Fo

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

<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的ItemsSource用作数据上下文。如何绑定到窗口数据上下文上的属性

提前感谢你的帮助

{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataContext}
但目前还不清楚任务是什么。
为什么不使用双向绑定并处理所选属性的更改?

Hi voroninp,如果我以一种奇怪的方式执行此操作,很抱歉,我对WPF和MVVM完全陌生。然后我可以直接处理直接从视图模型中选择的属性的更改?你能告诉我怎么做吗?或者我在哪里可以了解到这件事?我认为直接处理此更改的唯一方法是使用代码隐藏。非常感谢你回答我的问题,很简单。绑定有三种模式:单向、单向到源和双向。设置双向时,绑定视图的状态返回到源属性。因此,您可以在ViewModel的属性设置器中提供所需的逻辑。命令用于按钮单击等操作。