我为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>
答案 0 :(得分:2)
如何从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上的控件面板树视图。 Snoop然后将用Red-ish边框装饰控件。
识别专门负责屏幕区域的控件可能有助于缩小问题所在的范围。