C# 单击DockPanel会更改颜色背景
我为C# 单击DockPanel会更改颜色背景,c#,wpf,C#,Wpf,我为DockPanel设置了背景色,但当意外单击时,背景色会发生变化。如何将此行为与dockpanel分离 没有IsPressed属性或类似属性,因此我无法使用此属性: <Style TargetType="{x:Type DockPanel}"> <Setter Property="Background" Value="Transparent"/> <Style.Triggers> <Trigger Property=
DockPanel
设置了背景色,但当意外单击时,背景色会发生变化。如何将此行为与dockpanel
分离
没有IsPressed
属性或类似属性,因此我无法使用此属性:
<Style TargetType="{x:Type DockPanel}">
<Setter Property="Background" Value="Transparent"/>
<Style.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
回答你的具体问题
如何将此行为与dockpanel分离
WPF中有一个重要的特性,可以方便地知道控件的NULL
背景(即
)在命中测试方面不同于透明背景(即
),即使它们在视觉上看起来相同
如果背景是透明的,则会进行命中测试,从而触发鼠标事件,但如果背景是透明的,则不会发生命中测试,因此将背景设置为{x:Null}
,将产生您想要的效果
为什么背景会改变颜色?
标准的DockPanel
没有此功能,我无法推断您这里的代码片段会在哪里发生这种情况
当选中所有文本时,这可能是显示蓝色的文本框
控件吗
您是否尝试过通过查看运行的应用程序
将Snoop指向正在运行的应用程序后,您可以选择正在改变颜色的矩形区域(将鼠标移到应用程序上,按住CTRL
和Shift
),或选择Snoop面板树状图上的控件。然后,Snoop将用红色边框装饰控件
识别专门负责该屏幕区域的控件可能有助于缩小问题的范围。也显示您的DockPanel
。这不是由于DockPanel
。。它没有外观
那么,我该如何解决这个问题呢?我使用dockpanel显示其他项目,当用户意外按下背景时,它会将颜色更改为蓝色。StackPanel也会发生同样的情况。您确定它是dockpanel而不是dockpanel中的另一个控件吗?它可以从父代继承这种行为
<DockPanel>
<TextBlock Style="{StaticResource TextBlockStyle}"
Text="Margins : "/>
<Image Source="/View/Bitmaps/Horizontal.bmp"/>
<TextBox Style="{StaticResource EditBarStyle}"
Text="{Binding ReportHorizontalMargin}"/>
<Image Source="/View/Bitmaps/Vertical.bmp"/>
<TextBox Style="{StaticResource EditBarStyle}"
Text="{Binding ReportVerticalMargin}"/>
<Button HorizontalAlignment="Right"
Command="{Binding UpdateReportMargins}">
<TextBlock Style="{StaticResource TextBlockStyle}"
Text="Modify"/>
</Button>
</DockPanel>