Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改滚动WPF TabControl中TabItems的外观?_C#_Wpf_Xaml_Tabcontrol_Itemtemplate - Fatal编程技术网

C# 如何更改滚动WPF TabControl中TabItems的外观?

C# 如何更改滚动WPF TabControl中TabItems的外观?,c#,wpf,xaml,tabcontrol,itemtemplate,C#,Wpf,Xaml,Tabcontrol,Itemtemplate,我有一个滚动选项卡控件,使用ScrollViewer和StackPanel(StackPanel设置为IsItemsHost=“true”)。首先,我从最初在这里概述的解决方案开始工作-。目前它已经断开了链接(编辑:我在这里的一个论坛中找到了他的一个代码实例),因此这里是TabControl的xaml(不需要任何进一步的代码): 如何调整每个选项卡项的外观?例如,我想在StackPanel的帮助下,在每个TabItem中放置一个TextBox和TextBlock,这样我就可以有可重命名的选项

我有一个滚动选项卡控件,使用ScrollViewer和StackPanel(StackPanel设置为IsItemsHost=“true”)。首先,我从最初在这里概述的解决方案开始工作-。目前它已经断开了链接(编辑:我在这里的一个论坛中找到了他的一个代码实例),因此这里是TabControl的xaml(不需要任何进一步的代码):


如何调整每个选项卡项的外观?例如,我想在StackPanel的帮助下,在每个TabItem中放置一个TextBox和TextBlock,这样我就可以有可重命名的选项卡(根据需要折叠其中一个)。我可能还想在每个选项卡上添加一个关闭按钮。通常,我会使用以下内容:

                <TabControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Name="panel" Orientation="Horizontal">
                            <TextBox   Name="editHeader" Text="{Binding Header}" MaxWidth="250"/>
                            <TextBlock Name="textHeader" Text="{Binding Header}" />
                        </StackPanel>
                    </DataTemplate>
                </TabControl.ItemTemplate>

。。但这根本没有效果。任何想法都将不胜感激。谢谢

编辑:我仍在努力解决这个问题。解决方案是否可能涉及ContentPresenter和/或SelectedContentTemplate


编辑2:(这并没有增加我的问题的价值)我真的,真的希望WPF包括一些这种开箱即用的东西。TabControl的默认行为,以及几年后没有可滚动的TabControl(也没有简单的解决方案)这一事实,让我感到困惑。

嘿,猜猜看。我也做过类似的事情,不过我是根据这个系列来做的

所使用的方法是简单地设置tabitems模板的样式。例如:

<TabControl.Resources>
    <Style TargetType="{x:Type TabItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                <!-- your custom template goes here -->

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</TabControl.Resources>

不幸的是,这种方法意味着您必须完全重新定义选项卡项的外观和行为方式。但提供的链接提供了如何实现这一点的好例子


希望有帮助。

嘿,猜猜看。我也做过类似的事情,不过我是根据这个系列来做的

所使用的方法是简单地设置tabitems模板的样式。例如:

<TabControl.Resources>
    <Style TargetType="{x:Type TabItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                <!-- your custom template goes here -->

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</TabControl.Resources>

不幸的是,这种方法意味着您必须完全重新定义选项卡项的外观和行为方式。但提供的链接提供了如何实现这一点的好例子

希望有帮助。

只是一个想法

您是否尝试过将文本块添加到TabItem.Header中?如果您这样做而不是模板,它可能会工作。过去对我来说

只是一个想法

您是否尝试过将文本块添加到TabItem.Header中?如果您这样做而不是模板,它可能会工作。对于我来说,在过去

我想我已经做到了(尽管仍然有点交叉手指——我还没有处理TextBlock和TextBox的可见性以进行重命名)

这与Val的解决方案类似,因为我在其TabItem上使用TabControl.Resources,但相关的属性是HeaderTemplate,我只是覆盖DataTemplate中的ContentPresenter。(避免替换\破坏TabControl免费提供的许多良好行为的措施)


我有点像WPF新手,所以这基本上是我在谷歌搜索中不断尝试的结果。对于那些感兴趣的人来说,这个链接(关于StackOverflow)最终对我帮助最大-

我想我已经得到了它(尽管仍然有点交叉手指——我还没有处理TextBlock与TextBox的可见性以进行重命名)

这与Val的解决方案类似,因为我在其TabItem上使用TabControl.Resources,但相关的属性是HeaderTemplate,我只是覆盖DataTemplate中的ContentPresenter。(避免替换\破坏TabControl免费提供的许多良好行为的措施)



我有点像WPF新手,所以这基本上是我在谷歌搜索中不断尝试的结果。对于那些感兴趣的人来说,这个链接(在StackOverflow上)最终对我帮助最大-

我还没有将TabItems绑定到标题(使用Text=“{Binding Header}”--无论出于什么原因,它都不起作用),但它对TabItems的样式有着明显的影响,因此这可能是一个有希望的角度。你知道为什么绑定到标题会失败吗?我现在明白你说我必须重新定义tabitems的方式是什么意思了
<TabControl.Resources>
    <Style TargetType="{x:Type TabItem}">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <ContentPresenter>
                        <ContentPresenter.Content>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{TemplateBinding Content}"/>
                                <TextBox Text="{TemplateBinding Content}"/>
                            </StackPanel>
                        </ContentPresenter.Content>
                    </ContentPresenter>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</TabControl.Resources>