我有一些看起來應該是很簡單的,但事實上已經證明是十分棘手的問題。WPF UI持久性的TabControl
比方說你有必然的ViewModels的的ItemSource一個TabControl,並使用一個DataTemplate的項目顯示。現在讓我們說DataTemplate包含一個帶兩列的Grid和一個Grid分隔符來調整列的大小。
的問題是,如果你調整一個選項卡上的列,並切換到另一個選項卡中,列也調整。這是因爲TabControl在所有選項卡中共享DataTemplate。這種UI持久性的缺乏被應用於模板的所有元素,這可以在調整各種UI組件時產生令人沮喪的體驗。另一個例子是DataGrid中的滾動位置(在選項卡上)。如果包含更多行的DataGrid滾動到另一個選項卡的底部,則包含少量項目的DataGrid將滾動到視圖外(只有一行可見)。最重要的是,如果TabControl在多個DataTemplates中定義了各種項目,則在不同類型的項目之間切換時會重置視圖。我可以理解,這種方法節省了資源,但最終的功能似乎與預期的UI行爲非常矛盾。
,所以我不知道是否有一個解決方案/解決方法,這是我敢肯定,這是其他人已經遇到過的東西。我在其他論壇上發現了一些類似的問題,但沒有真正的解決方案。一個關於使用AdornerDecorator,但是在與DataTemplate一起使用時似乎不起作用。我並不熱衷於將所有UI屬性(如列寬,滾動位置)綁定到我的ViewModels,事實上我嘗試了這個簡單的GridSplitter示例,但我沒有設法使其工作。 ColumnDefinitions的寬度不一定受網格分割器的影響。無論如何,如果有一個通用的解決方案,這將是很好的。有什麼想法嗎?
如果我溝TabControl的,並使用一個ItemsControl將我遇到類似的問題?是否可以修改TabControl樣式,以便它不共享標籤之間的ContentPresenter?
您能否提供用於測試它的「ImitateTabControlStyle」資源。這聽起來不錯 – 2010-03-26 06:47:12