微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WPF TabControl 标头问题

如何解决WPF TabControl 标头问题

我正在 WPF 中制作一个应用程序,该应用程序显示可以拖动和缩放的图像。底部、右侧和上侧包含一些 UI 元素,如按钮,在中间我有一个 TabControl,我在 viewmodel 的代码中向其中添加了 TabItems。这些 TabItems 由它们的内容(图像)和我有选项卡按钮的标题组成。我遇到的问题是,我拖动的图像覆盖了标题,而不是您在屏幕截图上看到的按钮。 我期望的行为是将此图像隐藏在整个标题下方,而不仅仅是按钮。它只发生在底部。当我将图像拖到顶部或右侧时,它会像预期的那样隐藏在两侧。

Header issue

我尝试更改其背景、不透明度和 ZIndex,但没有任何效果

这是我的代码

XAML:

<TabControl Grid.Row="1" Grid.Column="0" TabStripPlacement="Bottom" Background="LightGray" ItemsSource="{Binding LayoutTabs}" 
                    Selectedindex="0" SelectedItem="{Binding SelectedTab,Mode=OneWayToSource}"/>

C#:

            LayoutTabs = new BindableCollection<TabItem>();

            for (int i = 0; i < _content.Layoutimages.Count; i++)
            {
                DrawingImage drawing = _content.Layoutimages.ElementAt(i);

                Image image = new Image() { Source = drawing };
                image.MouseMove += OnMouseMove;

                var container = new LayoutContainer()
                {
                    Background = Brushes.WhiteSmoke,Child = image,Focusable = true,};

                var tabItem = new TabItem()
                {
                    Header = _content.GetLayoutName(i),Content = container
                };

                LayoutTabs.Add(tabItem);
            }

解决方法

该行为是由于标题面板背景在默认控件模板中设置为透明所致。如果您右键单击设计器窗口(不是 xaml 编辑器)中的 tabcontrol 并单击编辑模板-> 编辑副本,您将获得该模板的副本,然后可以使用您的背景颜色修改标题面板,如果需要增加 Zindex:

[....]
//this is the line to make your changes on:
 <TabPanel x:Name="headerPanel" Background="Transparent" Grid.Column="0" IsItemsHost="true" Margin="2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/> 
[....]
   

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。