2

WPF タブ コントロールに問題があります。

ObservableCollection にバインドされた ItemsSource を持つ TabControl があります。タブのヘッダー/コンテンツ部分のデータ テンプレートを作成しました。コンテンツ部分には、多数のラベルとテキスト ボックスを備えたカスタム コントロールが含まれています。新しいタブが作成されたときに編集可能なテキスト ボックスの場合、そのデータは引き継がれ、新しいタブに表示されます。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}"/>

他にどのような情報を提供すればよいかわかりません。多分これはよくある問題で、何かを正しく設定していないだけですか? 基本的に、すべてのタブに対してコントロールの新しいインスタンスを作成できるようにしたいだけです...

前もって感謝します。

4

1 に答える 1

0

ViewModel がシングルトンであり、複製されているか、新しいタブに既存の ViewModel を設定しようとしているかのように聞こえます。

MEF を使用している場合は、[PartCreationPolicy] 属性を NonShared に設定することを忘れないでください。

于 2013-03-12T12:29:29.393 に答える