0

我正在学习WPF,它对所有的DataTemplate东西都非常困惑。我有一个TabControl,在里面我会创造很多TabItems。有两种TabItems,一种包含 1 textbox,另一种包含 atextbox和 a listbox

像这样:

在此处输入图像描述

我制作了十几个这样的选项卡,以不同的组合,我怎样才能制作一个模板/预制控件,我可以说,我想要TabControl.AddTab(style1)和另一个时间.Add(Style2)......

这可能吗?我该怎么做呢?

listbox第二个问题,如果完成了,如果名称是自动生成的,我将如何引用任何一个选项卡的内部?

以下是 XAML 中的两种不同类型:

<TabItem Header="Style2">
    <TextBox IsReadOnly="True" TextWrapping="Wrap" />
</TabItem>

<TabItem Header="Style1">
    <DockPanel>
        <ListBox DockPanel.Dock="Right">
            <ListBoxItem>User1</ListBoxItem>
            <ListBoxItem>User2</ListBoxItem>
        </ListBox>
        <TextBox IsReadOnly="True" />
    </DockPanel>
</TabItem>
4

1 回答 1

0

在 WPF 中,您可以利用控件的 ItemTemplate(用于标题)和 ContentTemplate(用于选项卡内的内容)来控制内容。

在 ContentTemplate 内的 DataTemplate 中定义 dedired 控件。

这是一个未经测试的示例:

<TabControl ItemsSource="{Binding Path=AllTabs, Mode=OneWay}">
  <TabControl.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Path=HEADERPROPERTY}" Margin="4,2,2,2" />
    </DataTemplate>
  </TabControl.ItemTemplate>
  <TabControl.ContentTemplate>
    <DataTemplate>
      <StackPanel Orientation="Vertical">
        <TextBlock Text="{Binding Path=SOMEPROPERTY}" />
        <TextBlock Text="{Binding Path=SOMEOTHERPROPERTY}" />
        <TextBox Text="{Binding Path=SOMETEXTPROPERTY}" />
      </Grid>
    </DataTemplate>
  </TabControl.ContentTemplate>
</TabControl>

前提是绑定中的“AllTabs”属性是一个 ObservableCollection,其中包含一个类,该类包含您想要显示的不同属性。就像 Header 所在的 String 属性(或更多)一样。以及您需要在内容中显示的任何内容。

于 2013-01-01T22:06:15.127 回答