【问题标题】:Keeping a custom cursor on a WPF popup在 WPF 弹出窗口上保持自定义光标
【发布时间】:2011-06-08 18:24:11
【问题描述】:

我的应用程序中有一些自定义光标。 我使用 informations found on the second answer here 来创建我的自定义光标。这很好用。 我的问题是,当我将鼠标移到弹出窗口上时,鼠标显示为默认光标。奇怪的是,当我将鼠标移出弹出窗口时,我的自定义光标又回来了。 好的,所以我像这样实例化我的光标:

UserControl.xaml:

    <TextBlock 
        x:Name="SupprimerV" 
        x:Key="SupprimerV" 
        Cursor="../Utils/Supprimer.cur"/> 

在 UserControl.xaml.cs 中:

this.Cursor = ((TextBlock)this.FindResource("SupprimerV")).Cursor;

然后我调用我自己的控件 SimplePopup,它是从 Popup 派生的,如下所示:

_pop = new SimplePopup(this);  //Irrelevant information omitted

SimplePopup.cs:

public simplePopup(FrameworkElement relativeTo)
    {
        this._relativeTo = relativeTo;
        this.Cursor = relativeTo.Cursor; //Trying to set the cursor of the popup but dosent work
        ...
    }

我尝试设置弹出光标,但它似乎不起作用。 光标在我的 UserControl 上工作正常,但当鼠标悬停在 Popup 上时失败。

我错过了什么? 是否有什么东西阻止我的光标在弹出窗口上正常工作?

感谢您的帮助, 拼写错误见谅^^

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    好的,所以我找到了一种使光标正确显示在弹出窗口中的方法。 我的 SimplePopup 使用边框作为其子元素。我尝试将边框的光标设置为 _relativeTo 光标,如下所示:

    popBorder.Cursor = _relativeTo.Cursor;
    

    并且成功了 我想知道为什么我做了一些研究,发现了这段有趣的文字:

    C# 2010 中的 Pro WPF - 第 6 章第 186 页:“如果要查看,必须设置 Background 属性 您的内容,因为它不会从您的窗口继承,您需要 自己添加边框(边框元素非常适合这个 目的)。”http://archon.name/files/books/programming/Apress.Pro.WPF.in.C%23.2010.Windows.Presentation.Foundation.in.NET.4.pdf

    很明显,弹出窗口不会继承其创建者的任何属性(包括光标)。

    我认为由于弹出窗口根本没有任何外观,因此他的光标属性不会沿着其元素树传播......

    这让我感到惊讶,因为在我的主应用程序中,我将光标设置为树中的第一个元素,并且它似乎传播得很好,或者至少它可以出现在子元素上。

    我想知道是否有其他原因,或者这种行为是否出现在 WPF 中的其他任何地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多