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>

DockPanel在单击时更改背景颜色

回答您的具体问题

如何将这种行为与摘要面板分离?

在WPF中,有一个重要的特征很容易知道,控件的NULL的背景(即<Setter Property="Background" Value="{x:Null}"/>)与命中测试透明的背景(如<Setter Property="Background" Value="Transparent"/>)不同,即使它们在视觉上看起来相同。

如果背景是Transparent,则会发生命中测试并因此触发鼠标事件,但如果背景是{x:Null},则不会发生,因此将背景设置为{x:Null}将产生您所要求的效果。

背景为什么变色

标准的DockPanel没有这个功能,我无法用这里的代码片段推断出这可能发生在哪里。

这可能是TextBox控件在选择所有文本时显示蓝色吗?

您是否尝试过通过Snoop查看运行的应用程序?

将Snoop指向正在运行的应用程序后,您可以选择正在更改颜色的矩形区域(按住CTRLShift将鼠标移到应用程序上)或选择Snoop面板树状视图上的控件。史努比会用红色的边界装饰控制。

识别专门负责该屏幕区域的控件可能有助于缩小问题所在的范围。