2013-03-12 67 views
1

我遇到了WPF選項卡控件的問題。WPF選項卡數據模板 - 控件在創建新選項卡時保留值

我有一個TabControl,與ItemsSource綁定到一個ObservableCollection。我爲選項卡的標題/內容部分創建了一個數據模板。內容部分包含一個自定義控件,帶有一堆標籤和文本框。對於創建新選項卡時可編輯的文本框,數據可以繼續並顯示在新選項卡中。不知道這是我的XAML或視圖模型中的問題。這裏是我的代碼爲XAML:

 <UserControl.Resources> 
      <DataTemplate x:Key="TabItemHeaderTemplate"> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding AdFile.Name}" /> 
       </StackPanel> 
      </DataTemplate> 
      <DataTemplate x:Key="TabItemContentTemplate"> 
       <MyView:MyCustomControl/> 
      </DataTemplate> 
      <Style x:Key="TabItemContainerStyle" TargetType="TabItem"> 
       <Setter Property="Header" Value="{Binding}"/> 
       <Setter Property="HeaderTemplate" 
       Value="{StaticResource TabItemHeaderTemplate}"/> 
       <Setter Property="Content" Value="{Binding}"/> 
       <Setter Property="ContentTemplate" 
       Value="{StaticResource TabItemContentTemplate}"/> 
      </Style> 
    </UserControl.Resources> 


     <TabControl Grid.Row="3" ItemsSource="{Binding OpenedFiles}" x:Name="_myTabControl" SelectedItem="{Binding Path=CurrentDataControlViewModel, Mode=TwoWay}" SelectionChanged="TabControlSelectionChanged" ItemContainerStyle="{StaticResource TabItemContainerStyle}"/> 

不知道我應該提供什麼其他信息。也許這是一個常見問題,我只是沒有正確設置一些東西?基本上我只是想能夠爲每個選項卡創建控件的新實例....在此先感謝。

+0

顯示如何創建新選項卡。另外,請更具體地說明哪些數據從哪裏傳出。 – 2013-03-12 11:34:25

+0

你能更詳細地描述一下,你想達到什麼樣的行爲,以及你目前看到了什麼樣的行爲? – Marc 2013-03-12 11:37:29

+0

這是正常的TabControl行爲。您將'ContentTemplate'設置爲UserControl,並且由於切換選項卡時模板不會更改,因此WPF認爲沒有理由重新繪製模板的新實例。我通常使用TabControl的自定義版本來解決您的問題。代碼可以在[這裏]找到(http://stackoverflow.com/a/8619120/302677) – Rachel 2013-03-12 12:48:45

回答

0

聽起來好像你的ViewModel是一個Singleton,被克隆,或者你試圖用現有的ViewModel填充新的標籤。

如果您使用的是MEF,請記住將[PartCreationPolicy]屬性設置爲NonShared。

相關問題