DockPanel在单击时更改背景颜色
本文关键字:背景 颜色 单击 DockPanel | 更新日期: 2023-09-27 18:30:11
我为DockPanel
设置了背景色,但当它意外成为clicked
时,它会发生变化。如何将这种行为与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
:
<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>
回答您的具体问题
如何将这种行为与摘要面板分离?
在WPF中,有一个重要的特征很容易知道,控件的NULL
的背景(即<Setter Property="Background" Value="{x:Null}"/>
)与命中测试透明的背景(如<Setter Property="Background" Value="Transparent"/>
)不同,即使它们在视觉上看起来相同。
如果背景是Transparent
,则会发生命中测试并因此触发鼠标事件,但如果背景是{x:Null}
,则不会发生,因此将背景设置为{x:Null}
将产生您所要求的效果。
背景为什么变色
标准的DockPanel
没有这个功能,我无法用这里的代码片段推断出这可能发生在哪里。
这可能是TextBox
控件在选择所有文本时显示蓝色吗?
您是否尝试过通过Snoop查看运行的应用程序?
将Snoop指向正在运行的应用程序后,您可以选择正在更改颜色的矩形区域(按住CTRL
和Shift
将鼠标移到应用程序上)或选择Snoop面板树状视图上的控件。史努比会用红色的边界装饰控制。
识别专门负责该屏幕区域的控件可能有助于缩小问题所在的范围。