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