Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义光标位于每个其他可视组件上方_C#_Wpf_Windows Store Apps_Winrt Xaml - Fatal编程技术网

C# 自定义光标位于每个其他可视组件上方

C# 自定义光标位于每个其他可视组件上方,c#,wpf,windows-store-apps,winrt-xaml,C#,Wpf,Windows Store Apps,Winrt Xaml,我有一个带有自定义光标的Windows Modern应用程序,它是通过在系统光标后面有一个图像来实现的 我只是将自定义光标图像添加到我的应用程序的主网格中,一切正常 public MainPage() : base(true) { this.InitializeComponent(); MainPageGrid.Children.Add(new CustomCursor()); } 但是当一个弹出窗口打开时,它会超过我的自定义光标。我是否可以设置组件的Z索引(或类似的东西),使

我有一个带有自定义光标的Windows Modern应用程序,它是通过在系统光标后面有一个图像来实现的

我只是将自定义光标图像添加到我的应用程序的主网格中,一切正常

public MainPage() : base(true)
{
    this.InitializeComponent();
    MainPageGrid.Children.Add(new CustomCursor());
}

但是当一个弹出窗口打开时,它会超过我的自定义光标。我是否可以设置组件的Z索引(或类似的东西),使其成为现代应用程序中最重要的可视组件?

我建议使用实际的自定义光标。我觉得这是一个不错的介绍。您还可以查看有关更改光标的一些提示。除此之外,我不认为你能分辨出随机弹出窗口何时打开。您可以使用进行投票,然后做一些事情使您的弹出窗口显示在顶部(可能只是重新打开会起作用,或者您可能需要每次创建一个新的),但这可能不会给您带来良好的用户体验或性能。您还可以从
组合框
弹出按钮
等中找出可能显示弹出窗口的所有事件,但这听起来很痛苦。最好创建一个附加的行为,您可以附加到所有此类弹出源元素,以触发XAML呈现的自定义光标的z索引修复…

无需将组件实现为自定义光标,因为可以覆盖最大大小限制:

听起来您可能需要查看
活动窗口
,然后进行检查。一旦您知道弹出窗口是活动窗口或位于最前端。。然后设置自定义光标。。但是如果没有看到任何代码我就说不出来我添加了我正在使用的代码,希望能有所帮助。同时,我将按照您的建议检查
活动窗口
。我想说的是,
弹出窗口
是一个特殊控件,它显示在除最上面的窗口之外的所有窗口的顶部。只有真实的鼠标(不是假鼠标)可以在上面悬停。无论如何,你应该使用一个
窗口
或者甚至是一个
弹出窗口
来伪造光标(自定义光标),然后你可以将它设置为最上面的,这样它就可以放在弹出窗口的上面。实际上我使用的是一个弹出窗口,但它不会停留在其他弹出窗口的上面。即使打开和关闭CustomCursor弹出窗口也不会显示在其他弹出窗口之上…谢谢您的回答。我无法自定义系统的光标,因为允许的最大大小是32x32p,而我的更大。正如我对前面的评论所作的回答,仅仅打开和关闭弹出窗口不会显示在其他弹出窗口之上。我会尝试你建议的创建新弹出窗口的解决方案,然后我会告诉你它是如何工作的。创建新弹出窗口也不起作用。。。我认为出现这个问题是因为我正在主网格
MainPageGrid.Children.Add(newcustomcursor())中添加光标,因此该网格上方的所有内容都将位于我的光标上方。但是我应该在哪里设置自定义光标呢?尝试使用
VisualTreeHelper
获取最上面的元素。我认为即使是
Window.Current.Content
也不是最上面的一个,因此您需要找到它。我认为您可能能够使游标大于32x32。检查或搜索它似乎可能涉及使用图标文件作为光标,但我认为它应该可以工作,并且比使用XAML进行黑客攻击要好得多。我发现了一个创建更大动画光标的工具:从我所看到的情况来看,即使在VS 2013中,您似乎也可以创建一个256x256的。我还没有检查你是否可以加载这些…你能从商店应用程序调用
SetSystemCursor
吗?实际上我使用了一个桌面可执行文件来进行调用,因为这个应用程序仅用于学术目的。