1. 最外層是Window是對象,Window的ItemsControl使用了ItemsTemplate,然后在ItemsTemplate中要綁定Language屬性,
而整個Window的數據源是通過DataContext來指定的,類型是自定義的WindowViewModel, 而Language就是WindowViewModel的一個屬性
在Window的構造函數中書寫:
this.DataContext = new WindowViewModel();
2.在ItemsTemplate中進行綁定,核心代碼如下:
1 <TabItem 2 Header="{Binding DataContext.Language, RelativeSource={RelativeSource AncestorType=Window, AncestorLevel=1} 3 }" />
其中注意:
使用了相對資源 RelativeSource來引用Window的DataContext,所以 AncestorType指定類型是Window, 層次是1層,
特別要注意的是:
需要綁定的數據是WindowViewModel類型的,而相對資源指定的是Window元素,它是沒有Language這個屬性的,
Language是WindowViewModel的屬性,而在這里我們正好將WindowViewModel賦值給了Window的DataContext,
所以在綁定時使用的Path應該是 DataContext.Language,其中DataContext是一定不能少寫的。
