2

TabItem:内のすべてのsに同じコンテンツを表示したいTabControl

<TabControl>
    <TabItem Header="Tab 1">
        <StackPanel>
            <ComboBox />
            <Button Content="Button" x:Name="bButton" />
        </StackPanel>
    </TabItem>
    <TabItem Header="Tab 2" />
    <TabItem Header="Tab 3" />
</TabControl>

コードを繰り返さずに、XAMLでのみ(コードビハインドを使用せずに)これを行う簡単な方法はありますか?

4

3 に答える 3

3

あなたはこのようにそれを行うことができます。xamlで共通リソースを定義します。

<Window.Resources>
    <StackPanel x:Key="CommonTabContent">
        <ComboBox />
        <Button Content="Button" x:Name="bButton" Click="bButton_Click_1" />
    </StackPanel>

</Window.Resources>

のように使用します

<TabControl>
    <TabItem Header="Tab 1" Content="{StaticResource CommonTabContent}"/>
    <TabItem Header="Tab 2" Content="{StaticResource CommonTabContent}" />
    <TabItem Header="Tab 3" Content="{StaticResource CommonTabContent}" />
</TabControl>

.csファイルコードにはメソッドが含まれます。

private void bButton_Click_1(object sender, RoutedEventArgs e)
{
    // your code
}

それが役に立てば幸い..

于 2012-12-26T03:33:42.487 に答える
2

あなたは出来る:

  1. コンテンツをに抽出しUserControl、それぞれで使用しますTabItem
  2. を作成し、それぞれControlTemplateのインスタンスに適用しますControlTabItem
  3. を定義し、のをDataTemplate使用して各子にテンプレートを適用しますItemsSourceTabControl

特に各タブページのコンテンツに個別にアクセスする必要がある場合は、最初のアプローチがおそらく最も健全です。

于 2012-12-25T18:45:39.600 に答える
0

<StackPanel>外側を移動し<TabControl>、マージンを設定してTabControlの上に配置します。

<TabControl HorizontalAlignment="Left">
    <TabItem Header="Tab 1" />
    <TabItem Header="Tab 2" />
    <TabItem Header="Tab 3" />
</TabControl>
<StackPanel HorizontalAlignment="Left" Margin="5,50,0,0">
    <ComboBox />
    <Button Content="Button" x:Name="bButton" />
</StackPanel>

これは最もクリーンでシンプルなアプローチです。

于 2012-12-30T18:02:04.887 に答える