2012-10-08 47 views
1

我有一個綁定到員工的觀察集合,像這樣設置的DataContext中的TabControl

<TabControl ItemsSource="{Binding Employees}"> 
      <TabControl.ContentTemplate> 
       <DataTemplate> 
        <views:EmployeeView/> 
       </DataTemplate> 
      </TabControl.ContentTemplate> 
     </TabControl> 

我有我的DataTemplate設置爲我的員工視圖一個TabControl。假設我的員工集合中有兩名員工。我得到適當的選項卡出現。在我的EmployeeView中,我有一個複選框。如果我不綁定這個複選框,它會在所有選項卡上進行檢查。我不確定我在跟蹤爲什麼會發生這種情況。我想我的問題是,我將如何設置EmployeeView的DataContext,以便tabcontrols選項卡將獨立運作。

+0

您的CheckBox在XAML中設置爲「IsChecked = true」嗎? – Simon

+0

沒有先生,一切都按預期工作,如果我綁定到一個VM ...但是,我剛剛使用代碼後面的代碼展開或摺疊視圖的一部分。我沒有任何約束力。當我檢查一下我的員工時,它擴展了所有員工。不是我想要的行爲。希望這個更有意義,謝謝。 – poco

+0

我已經建議了一個答案,但我不確定爲什麼所有的客戶視圖都是擴展的。根據我的經驗,綁定的「TabControl」中的未綁定控件在切換標籤時會失去它們的狀態。例如,如果我從標籤A移動到B然後返回到A,而不是在所有標籤中展開的「擴展器」,則先前展開的「擴展器」會摺疊。 – Simon

回答

1

問題可能在於當TabControl是數據綁定時,它會「虛擬化」其TabItems,卸載然後在選擇更改時重新加載和重新綁定它們的內容。

所以,你可以嘗試無論是在你的View結合CheckBox的IsCheckedViewModel的屬性,或禁用TabItem虛擬化與行爲,如一個在這裏:http://www.codeproject.com/Articles/460989/WPF-TabControl-Turning-Off-Tab-Virtualization

我最近使用過的上述行爲我自己,因爲我有與TabControl的默認數據綁定行爲類似的問題。