在我的CustomTabcontrol中,当通过数据模板将选项卡绑定到ObservableCollection中时,会创

本文关键字:选项 绑定 中时 ObservableCollection 会创 CustomTabcontrol 我的 数据 | 更新日期: 2023-09-27 18:12:53

仅仅当我将TabControl的ItemsSource绑定到视图模型的ObservableCollection时,就会创建多个视图,尽管在ObservableCollection中只有一个视图模型。

这在项目中通过以下消息输出到控制台的事实来证明:视图创建…Id = 1,视图创建…Id = 2这是我的代码

MainWindow.XAML
<Grid>
 <custom:TabControlExt   ItemsSource="{Binding Tabs}"  />
</Grid>

MainWindow.cs

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Tabs = new ObservableCollection<TestViewModel>();
            Tabs.Add(new TestViewModel());
            this.DataContext = this;
        }
        public ObservableCollection<TestViewModel> Tabs { get; set; }
    }

TestView.XAML.cs

 public partial class TestView : UserControl
    {
        static int __i = 0;
        int _i = 0;
        public TestView()
       {
            __i++;
            _i = __i;
            InitializeComponent();
            this.DataContextChanged += TestView_DataContextChanged;
            Console.WriteLine("View created ... Id = " + _i);
        }

应用程序。XAML

<Application.Resources>
        <DataTemplate DataType="{x:Type local:TestViewModel}">
            <local:TestView />
        </DataTemplate>
</Application.Resources>

有谁能解释为什么它创建了两个视图

在我的CustomTabcontrol中,当通过数据模板将选项卡绑定到ObservableCollection中时,会创

实际上我已经修正了

<DataTemplate x:Key="HeaderDataTemplate" x:Shared="false"  DataType={x:Type local:TabItemExt}">
    <TextBlock Focusable="False"  Text="{Binding}"  TextTrimming="CharacterEllipsis" IsHitTestVisible="False" Padding="4,0,4,1" />
   </DataTemplate>

<Setter Property="HeaderTemplate" Value="{StaticResource HeaderDataTemplate}" />

但是我在编辑HeaderTemplate时遇到了一些问题,它不会显示标题