导出 (0) 打印
全部展开

FrameworkElement.Cursor 属性

更新:2007 年 11 月

获取或设置当鼠标指针悬停在此元素上时显示的光标。这是一个依赖项属性。

命名空间:  System.Windows
程序集:  PresentationFramework(在 PresentationFramework.dll 中)
用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/xaml/presentation

public Cursor Cursor { get; set; }
/** @property */
public Cursor get_Cursor()
/** @property */
public  void set_Cursor(Cursor value)

public function get Cursor () : Cursor
public function set Cursor (value : Cursor)
<object Cursor="Cursor" .../>

属性值

类型:System.Windows.Input.Cursor

要显示的光标。根据此依赖项属性将默认值定义为 null。但是,运行时的实际默认值将受到多种因素的影响。

标识符字段

CursorProperty

设置为 true 的元数据属性

在 XAML 中设置此属性时,XAML 处理器将依赖于 Cursor 类的类型转换类来计算该字符串。提供的字符串的计算结果应该为 CursorType 值。有关详细信息,请参见 Cursor

在鼠标指针位于此元素上时是否显示此属性建立的光标还取决于 ForceCursor 属性的值。另外,一些与事件相关的因素(例如,活动拖动、鼠标捕获、控件中的文本编辑模式等)也会影响光标,并且其优先级高于在此属性中指定的值。

若要将设置此属性的行为恢复为最终的默认行为,请将此属性重新设置为 null

null 默认值实际上意味着此处延迟确定实际光标值,并且应该从其他地方获取该值。如果在没有来自任何源的编程值的情况下呈现光标,则 Windows Presentation Foundation (WPF) 应用程序上显示的默认光标将是一个箭头。但是,当忽略瞬态光标变化时,不会将这些变化设置为元素的 Cursor 值。如果实际设置了 Cursor 属性(例如,通过代码或样式),该属性将只报告非 null 值。鼠标指针每次移动到 WPF 应用程序上时都会引发 QueryCursor 事件。该事件将冒泡,并且沿路由的任何元素都有机会处理该事件以及通过此事件的参数设置光标的值。此机制在大多数情况下都会产生显而易见的光标。如果一个 QueryCursor 处理程序返回光标结果,则表明该事件得到处理,并且在参数中具有一个更改后的值,这一实际情况在任何级别上都优先于 Cursor 属性的值(设置了 ForceCursor 的情况除外)。

如果您不创建自定义光标,则通常需要将此属性设置为 Cursors 类的静态属性值。在代码中设置 Cursor 需要执行下列操作之一:

部分信任中不支持将 Cursor 设置为自定义值。有关自定义光标的更多信息,请参见输入概述

下面的示例演示如何特意设置光标图形。

private void CursorTypeChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBox source = e.Source as ComboBox;

    if (source != null)
    {
        ComboBoxItem selectedCursor = source.SelectedItem as ComboBoxItem;

        // Changing the cursor of the Border control 
        // by setting the Cursor property
        switch (selectedCursor.Content.ToString())
        {
            case "AppStarting":
                DisplayArea.Cursor = Cursors.AppStarting;
                break;
            case "ArrowCD":                        
                DisplayArea.Cursor = Cursors.ArrowCD;
                break;
            case "Arrow":
                DisplayArea.Cursor = Cursors.Arrow;
                break;
            case "Cross":
                DisplayArea.Cursor = Cursors.Cross;
                break;
            case "HandCursor":
                DisplayArea.Cursor = Cursors.Hand;
                break;
            case "Help":
                DisplayArea.Cursor = Cursors.Help;
                break;
            case "IBeam":
                DisplayArea.Cursor = Cursors.IBeam;
                break;
            case "No":
                DisplayArea.Cursor = Cursors.No;
                break;
            case "None":
                DisplayArea.Cursor = Cursors.None;
                break;
            case "Pen":
                DisplayArea.Cursor = Cursors.Pen;
                break;
            case "ScrollSE":
                DisplayArea.Cursor = Cursors.ScrollSE;
                break;
            case "ScrollWE":
                DisplayArea.Cursor = Cursors.ScrollWE;
                break;
            case "SizeAll":
                DisplayArea.Cursor = Cursors.SizeAll;
                break;
            case "SizeNESW":
                DisplayArea.Cursor = Cursors.SizeNESW;
                break;
            case "SizeNS":
                DisplayArea.Cursor = Cursors.SizeNS;
                break;
            case "SizeNWSE":
                DisplayArea.Cursor = Cursors.SizeNWSE;
                break;
            case "SizeWE":
                DisplayArea.Cursor = Cursors.SizeWE;
                break;
            case "UpArrow":
                DisplayArea.Cursor = Cursors.UpArrow;
                break;
            case "WaitCursor":
                DisplayArea.Cursor = Cursors.Wait;
                break;
            case "Custom":
                DisplayArea.Cursor = CustomCursor;
                break;
            default:
                break;
        }

        // If the cursor scope is set to the entire application
        // Use OverrideCursor to force the cursor for all elements
        if (cursorScopeElementOnly == false)
        {
            Mouse.OverrideCursor = DisplayArea.Cursor;
        }
    }
}


Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

.NET Framework

受以下版本支持:3.5、3.0

社区附加资源

添加
显示:
© 2015 Microsoft