0

私は学んでいます、それはすべてのものWPFと非常に混乱しています。DataTemplateがあり、TabControlその中にたくさんの を作成しますTabItemsTabItemsには 1 を含むものとtextbox、atextboxと aを含むものの2 種類がありlistboxます。

そのようです :

ここに画像の説明を入力

TabControl.AddTab(style1)私はこれらのタブをさまざまな組み合わせで何十個も作成しています。テンプレート/既製のコントロールを作成するにはどうすればよいでしょうか.Add(Style2)

これは可能ですか?どうすればいいですか?

そして二次的な質問ですが、これが達成されたlistbox場合、名前が自動生成された場合、どのタブの内部をどのように参照しますか?

XAML の 2 つの異なる型を次に示します。

<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 で、不要なコントロールを定義します。

テストされていない例を次に示します。

<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 であることが提供されます。ヘッダーがある文字列プロパティ (またはそれ以上) のように。そして、あなたがコンテンツに表示する必要があるものは何でも。

于 2013-01-01T22:06:15.127 に答える