GridSplitter的全局样式取决于其方向

时间:2013-09-05 13:59:03

标签: wpf grid styles gridsplitter

我想创建一个全局样式,它会影响我的应用程序的每个“GridSplitter”,以便在鼠标结束时更改其光标外观。

此代码适用于垂直GridSplitter:

<Style TargetType="GridSplitter">
  <Setter Property="Cursor" Value="SizeWe"></Setter>
</Style>

但我不知道如何检测其方向并在适当时将值设置为“SizeNs”。 我不想更改每个GridSplitter代码。我想要一种可以应用于每个Gridsplitter的样式,而无需设置资源键。

有什么想法吗?

对于所有拥有XamlParseException的人:'在'System.Windows.Baml2006.TypeConverterMarkupExtension'上提供值引发异常。行号“15”和行位置“9”。

确保您具有正确的游标名称语法。

1 个答案:

答案 0 :(得分:1)

您可以在控件模板触发器中使用ResizeDirection属性并设置适当的光标。

<Style TargetType="GridSplitter">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="GridSplitter">                        

                <Rectangle Fill="{TemplateBinding Background}"></Rectangle>

                <ControlTemplate.Triggers>
                    <Trigger Property="ResizeDirection" Value="Columns">
                        <Setter Property="Cursor" Value="SizeNS"></Setter>                                
                    </Trigger>
                    <Trigger Property="ResizeDirection" Value="Rows">
                        <Setter Property="Cursor" Value="SizeWE"></Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>