2

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

此代码适用于垂直 GridSplitter:

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

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

任何想法 ?

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

确保游标名称的语法正确。

4

1 回答 1

3

您可以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>
于 2013-09-05T14:04:14.753 回答