WPF TabControl header 问题

WPF TabControl header issue

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

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);
            }

该行为是由于标题面板背景在默认控件模板中设置为透明。如果您在 Designer window(而不是 xaml 编辑器)中右键单击选项卡控件并单击编辑模板->编辑副本,您将获得该模板的副本,然后可以使用您的 BackgroundColor 和如果需要增加 Zindex:

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