DockPanel在单击时更改颜色背景

时间:2016-01-13 12:13:59

标签: c# wpf

我为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>

1 个答案:

答案 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后,您可以选择正在改变颜色的矩形区域(将鼠标移到应用程序按住CTRLShift上)或选择Snoop上的控件面板树视图。 Snoop然后将用Red-ish边框装饰控件。

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