gpt4 book ai didi

wpf - tabControl 中的多个 userControl 实例

转载 作者:行者123 更新时间:2023-12-03 18:23:18 25 4
gpt4 key购买 nike

我有一个绑定(bind)到可观察集合的 tabControl。
在 headerTemplate 中,我想绑定(bind)到一个字符串属性,并且在 contentTemplate 中我放置了一个用户控件。

这是 MainWindow.xaml 的代码:

<Grid>
<Grid.Resources>
<DataTemplate x:Key="contentTemplate">
<local:UserControl1 />
</DataTemplate>

<DataTemplate x:Key="itemTemplate">
<Label Content="{Binding Path=Name}" />
</DataTemplate>
</Grid.Resources>

<TabControl IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding Path=Pages}"
ItemTemplate="{StaticResource itemTemplate}"
ContentTemplate="{StaticResource contentTemplate}"/>

</Grid>

及其背后的代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

this.DataContext = new MainWindowViewModel();
}
}

public class MainWindowViewModel
{
public ObservableCollection<PageViewModel> Pages { get; set; }

public MainWindowViewModel()
{
this.Pages = new ObservableCollection<PageViewModel>();
this.Pages.Add(new PageViewModel("first"));
this.Pages.Add(new PageViewModel("second"));
}
}

public class PageViewModel
{
public string Name { get; set; }

public PageViewModel(string name)
{
this.Name = name;
}
}

所以这种情况下的问题(指定了 itemTemplate 和 controlTemplate)是我只得到 一个 用户控件的实例,我想为每个绑定(bind)的项目创建一个实例。

最佳答案

试试这个:

<TabControl IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Pages}">
<TabControl.Resources>
<DataTemplate x:Key="contentTemplate" x:Shared="False">
<local:UserControl1/>
</DataTemplate>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Header" Value="{Binding Name}"/>
<Setter Property="ContentTemplate" Value="{StaticResource contentTemplate}"/>
</Style>
</TabControl.Resources>
</TabControl>

关于wpf - tabControl 中的多个 userControl 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/601826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com