如何设置三个usercontrol以显示在TabItem中?
本文关键字:显示 TabItem usercontrol 何设置 设置 三个 | 更新日期: 2023-09-27 18:06:30
我在谷歌上搜索了一下这个主题,我想要么我一定是在做一些不需要答案的基本事情,要么我正试图以一种复杂的方式解决我的问题,需要重新考虑整个问题。
我有一个工厂对象,它创建了一个窗口-这是由一个单独的ViewModel对象中的命令调用。工厂对象负责将数据上下文分配给传递给它的数据列表。列表可以是可变计数的,列表中的每个项目应该显示在窗口的TabControl的单独选项卡上。
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Path=VMNameAndDate, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=true}"></Setter>
</Style>
</TabControl.ItemContainerStyle>
我目前使用ItemContainerStyle设置TabItem头。这适用于标题,但我需要有三个独立的UserControls显示在每个tabitem上。
我已经将UserControls的命名空间添加到Window
xmlns:my="clr-namespace:ThisProgram.UserControls"
我曾尝试将它们设置为资源,但没有成功。你可能已经猜到了,我对WPF还是个新手。
你可以这样做:
如果下面是您的命名空间
xmlns:my="clr-namespace:ThisProgram.UserControls"
然后<Grid>
<TabControl>
<TabItem Header="UC1" >
<my:ucSDH ></my:ucSDH>
</TabItem>
<TabItem Header="UC2">
<my:ucWDH ></my:ucWDH>
</TabItem>
</TabControl>
</Grid>
您可以根据需要将DataContext附加到UserControls
如果你想将itemsSource绑定到TabControl,那么:
public ObservableCollection<Object> coll { get; set; }
public MainWindow()
{
InitializeComponent();
coll = new ObservableCollection<Object>();
Object uc1 = new UserControl1();
Object uc2 = new UserControl2();
coll.Add(uc1);
coll.Add(uc2);
tab1.ItemsSource = coll;
}
在Xaml中:
<TabControl x:Name="tab1" ItemsSource="{Binding coll}"></TabControl>
好的,经过大量的挖掘和与WPF中的模板的最终协调,答案是:
<TabControl Name="ViewModeListTabControl" Grid.Column="1"
ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, Mode=OneWay}"
SelectedItem="{Binding Path=SelectedViewModel,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=true}" ContentTemplate="{DynamicResource UCAnother}">
<TabControl.Resources>
<DataTemplate x:Key="UCAnother" DataType="{x:Type my:AnotherUserControl}" >
<my:AnotherUserControl DataContext="{Binding}"></my:AnotherUserControl>
</DataTemplate>
</TabControl.Resources>
我需要将TabControl的ContentTemplate设置为包含其他UserControls的主UserControl。我必须在TabControl的资源中的DataTemplate中引用主UserControl。