2012-09-01 190 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的屬性設置器中提供需要的邏輯。命令用於按鈕點擊等操作。 –