在WPF弹出窗口上保留自定义光标
本文关键字:保留 自定义 光标 窗口 WPF | 更新日期: 2023-09-27 17:58:46
我的应用程序中有一些自定义游标。我使用在这里的第二个答案中找到的信息来创建我的自定义光标。这很有效。我的问题是,当我把鼠标移到弹出菜单上时,鼠标会显示为默认的光标。奇怪的是,当我把鼠标移出弹出菜单时,我的自定义光标又回来了。好的,所以我把我的光标安装成这样:
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上运行良好,但当鼠标位于弹出菜单上时会失败。
我是不是错过了什么?是不是有什么东西阻止了我的光标在弹出菜单上正常工作?
感谢您的帮助,抱歉拼写错误^^
好的,所以我找到了一种方法,使我的光标正确地出现在我的弹出窗口中。我的SimplePopup使用边界作为它的子元素。我试图将该边界的Cursor设置为_relativeTo光标,如下所示:
popBorder.Cursor = _relativeTo.Cursor;
它起了作用我想知道为什么,所以我做了一些研究,发现了一段有趣的文字:
Pro-WPF在c#2010-第6章第186页:"如果你想看到您的内容,因为它不会从您的窗口继承,您需要自己添加边界(border元素非常适合目的)。"http://archon.name/files/books/programming/Apress.Pro.WPF.in.C%23.2010.Windows.Presentation.Foundation.in.NET.4.pdf
很明显,弹出窗口不会继承其创建者的任何属性(包括光标)。
我认为,由于弹出窗口根本没有出现,他的光标属性没有沿着元素树传播。。。
这让我很惊讶,因为在我的主应用程序中,我将光标设置为树中的第一个元素,它似乎传播得很好,或者至少可以出现在子元素上。
我想知道是否还有其他原因,或者这种行为是否出现在WPF的其他地方。