使用 ItemsSource 填充时设置 TabItem 样式

发布于 2024-08-24 08:36:42 字数 2309 浏览 9 评论 0原文

我正在使用使用 Itemssource 填充集合的 WPF Tabcontrol。

<TabControl x:Name="_tabControl" ItemsSource="{Binding TabViewModelList}">
            <TabControl.ItemContainerStyle>
                    <Style TargetType="TabItem">
                        <Setter Property="Header" Value="{Binding TabCaption}"/>
                    <Setter Property="Content" Value="{Binding TabContent}"/>
                    <Setter Property="IsSelected" Value="{Binding IsDefault}"/>
                </Style>
                </TabControl.ItemContainerStyle>
            </TabControl>

现在我想在 App.xaml(或其他资源文件)中设置 TabItem 样式,如下所示:

<Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Grid>
                            <Border
             Name="Border"
             Background="LightBlue"
             BorderBrush="Black"
             BorderThickness="1,1,1,1"
             CornerRadius="6,6,0,0" >
                                <ContentPresenter x:Name="ContentSite"
               VerticalAlignment="Center"
               HorizontalAlignment="Center"
               ContentSource="Header"
               Margin="12,2,12,2"/>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="LightBlue" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter TargetName="Border" Property="Background" Value="LightGray" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

..但是 ItemContainerStyle 当然会覆盖控件模板。

如何将这两者结合起来,以便我可以动态加载我的选项卡控件,并且仍然能够按照我想要的方式设置我的选项卡项的样式?

I'm using a WPF Tabcontrol populated with a collection using Itemssource.

<TabControl x:Name="_tabControl" ItemsSource="{Binding TabViewModelList}">
            <TabControl.ItemContainerStyle>
                    <Style TargetType="TabItem">
                        <Setter Property="Header" Value="{Binding TabCaption}"/>
                    <Setter Property="Content" Value="{Binding TabContent}"/>
                    <Setter Property="IsSelected" Value="{Binding IsDefault}"/>
                </Style>
                </TabControl.ItemContainerStyle>
            </TabControl>

Now I want to set my TabItem-style in my App.xaml(or other resourcefile) like this:

<Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Grid>
                            <Border
             Name="Border"
             Background="LightBlue"
             BorderBrush="Black"
             BorderThickness="1,1,1,1"
             CornerRadius="6,6,0,0" >
                                <ContentPresenter x:Name="ContentSite"
               VerticalAlignment="Center"
               HorizontalAlignment="Center"
               ContentSource="Header"
               Margin="12,2,12,2"/>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="LightBlue" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter TargetName="Border" Property="Background" Value="LightGray" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

..but the ItemContainerStyle, of course overrides the controltemplate.

How do I combine these two so I can load my tabcontrol dynamically and still be able to style my TabItems the way I want to?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会傲 2024-08-31 08:36:43

好吧...解决了我自己的问题。非常明显..

命名我的模板

<Style TargetType="{x:Type TabItem}" x:Key="TabItemTemplate">

添加了一个像这样的BaseOn属性:

<Style TargetType="TabItem" BasedOn="{StaticResource TabItemTemplate}">

但是如果我可以将它们组合成一个模板,请告诉我......

Ok... Solved my own problem. Pretty obvious..

Named my template

<Style TargetType="{x:Type TabItem}" x:Key="TabItemTemplate">

Added a BasedOn property like this:

<Style TargetType="TabItem" BasedOn="{StaticResource TabItemTemplate}">

But if I could combine them into one template please let me know...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文