我的应用程序中有一些自定义游标。 我使用 informations found on the second answer here来创建自定义光标。这很好用。 我的问题是,当我将鼠标移到Popup上时,鼠标显示为默认的Cursor。奇怪的是,当我将鼠标移出Popup时,我的自定义光标会回来。 好的,我就这样实现我的光标:
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上时失败。
我错过了什么吗? 是否会阻止我的光标在弹出窗口上正常工作?Thnx的帮助, 对不起拼写错误^^
答案 0 :(得分:0)
好的,所以我找到了一种方法让我的光标正确显示在我的弹出窗口中。 我的SimplePopup使用边框作为其子元素。我试图将边框的Cursor设置为_relativeTo游标,如下所示:
popBorder.Cursor = _relativeTo.Cursor;
它有效 我想知道为什么我做了一些研究,我找到了这篇有趣的文章:
Pro#WPF in c#2010 - 第6章第186页:“如果要查看,必须设置Background属性 您的内容,因为它不会从您的窗口继承而且您需要 自己添加边框(Border元素非常适用于此 目的)。“http://archon.name/files/books/programming/Apress.Pro.WPF.in.C%23.2010.Windows.Presentation.Foundation.in.NET.4.pdf
很明显,弹出窗口不会继承其创建者的任何属性(包括光标)。
我认为因为弹出窗口根本没有外观,所以他的光标属性在其元素树中传播...
令我感到惊讶的是,因为在我的主应用程序中,我将光标设置为树中的第一个元素,它似乎传播得很好,或者至少它可以出现在子元素上。
我想知道是否还有其他原因,或者这种行为是否出现在WPF的其他任何地方。