繁体   English   中英

在 WPF 弹出窗口上保留自定义 cursor

[英]Keeping a custom cursor on a WPF popup

我的应用程序中有一些自定义光标。 我使用在第二个答案中找到的信息来创建我的自定义 cursor。 这很好用。 我的问题是,当我将鼠标移到弹出窗口上时,鼠标显示为默认的 Cursor。 奇怪的是,当我将鼠标移出弹出窗口时,我的自定义 cursor 又回来了。 好的,所以我像这样实例化我的 cursor:

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
        ...
    }

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

我错过了什么? 有什么东西阻止我的 cursor 在弹出窗口上正常工作吗?

感谢您的帮助,抱歉拼写错误^^

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

popBorder.Cursor = _relativeTo.Cursor;

它奏效了我想知道为什么我做了一些研究,发现了这段有趣的文字:

Pro WPF 在 c# 2010 - 第 6 章第 186 页:“如果您想查看您的内容,您必须设置背景属性,因为它不会从您的 Z05B8C74CBD96FBF2DE4C1A352702 继承,因为它不会从您的 Z05B8C74CBD96FBF2DE4C1A352702 元素继承,并且您需要完美地添加边框元素(为此目的)。” http://archon.name/files/books/programming/Apress.Pro.WPF.in.C%23.2010.Windows.Presentation.Foundation.in.NET.4.pdf

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM