使用样式设置光标

时间:2015-09-27 07:07:05

标签: c# wpf xaml cursor

<Window x:Class="ResizeMove0923.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Window.Resources>
    <Style  TargetType="Control"  >
        <Setter Property="Cursor" Value="SizeAll" />
    </Style>
</Window.Resources>

<Canvas Background="Beige" Name="canvas" >
    <Label Canvas.Left="72" Canvas.Top="23" Height="23" Name="textbox1" Width="75" Content="ttttt"    />
    <TextBox Height="21" Canvas.Left="147" Canvas.Top="23" Width="75" Name="textbox2" Text="&amp;Well" />
    <TextBox Canvas.Left="147" Canvas.Top="60" Height="24" Name="textBox3" Width="128"  />
</Canvas>

作为一名新手,我在使用Style设置画布中所有元素的光标类型时遇到问题。如果我将TargetType作为Label或TextBox,它可以工作。但我希望光标可以更改将添加到画布的所有类型的元素。我的Style元素有什么问题?

1 个答案:

答案 0 :(得分:2)

直接在Canvas上设置,并将ForceCursor设置为true,这样可以防止子元素覆盖:

<Canvas Background="Beige" Name="canvas" Cursor="SizeAll" ForceCursor="True">
   ...
</Canvas>
  

如果我将TargetType作为Label或TextBox,它可以工作。

隐式样式仅在TargetType匹配时起作用 - 来自msdn

  

如果您隐式设置样式,则样式仅应用于   与TargetType完全匹配的类型,而不是与派生的元素匹配的类型   来自TargetType值。例如,如果您创建样式   隐式地对应用程序中的所有ToggleButton控件,以及   您的应用程序具有ToggleButton和CheckBox控件(CheckBox   源自ToggleButton),&#34; ToggleButton&#34;隐含的风格是   仅适用于ToggleButton控件。