代码之家  ›  专栏  ›  技术社区  ›  Sturm

鼠标悬停时的网格拆分器可视画面

  •  6
  • Sturm  · 技术社区  · 11 年前

    我想要一个 GridSplitter 只有当用户将鼠标放在上面时才可见。为此,我设置了 DataTrigger 以其风格。但我不知道怎么了,因为我没有得到想要的行为。它只是保持不变。

                    <GridSplitter
                ResizeDirection="Columns"
                ResizeBehavior="BasedOnAlignment"
                Grid.Column="1"
                Grid.Row="0"
                Grid.RowSpan="2"
                Width="8"
                Height="Auto"
                HorizontalAlignment="Left"
                VerticalAlignment="Stretch" 
                    Background="AliceBlue"
                Margin="-3 0 0 0">
                    <GridSplitter.Style>
                        <Style TargetType="{x:Type GridSplitter}">
                            <Setter Property="Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsMouseOver}">
                                    <Setter Property="Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </GridSplitter.Style>
                </GridSplitter>
    

    你看到什么不对劲了吗?做 网格拆分器 必须以不同的方式进行造型?

    1 回复  |  直到 11 年前
        1
  •  9
  •   Vinz    6 年前

    我明白了,必须使用触发器而不是DataTriggers:

    <GridSplitter.Style>
        <Style TargetType="{x:Type GridSplitter}">
            <Setter Property="Background" Value="Transparent"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="AliceBlue"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </GridSplitter.Style>
    

    顺便说一句,我想如果我设置 Visibility Hidden 我不能瞄准 GridSplitter ,所以我切换它 Background 相反