WinRT XAML - 如何修复higlight问题?

时间:2013-07-07 14:14:06

标签: winrt-xaml

当我在鼠标驱动设备上测试我的应用程序时,我会看到一些我想尝试解决的奇怪突出问题。

第一种情况发生在我调用应用栏时,将鼠标悬停在按钮上(此时按钮变为灰色),然后按Escape键关闭应用栏。如果我再次调用应用程序栏,则按钮保持灰色,即使鼠标不在其上,并保持该状态,直到我将鼠标移到它上面然后再移开。

Highlighted button

我无法立即看到按钮的属性,当应用栏被解除时,我可以重置该属性以清除该状态。

我看到的另一个奇怪之处在于,有时页面列表中的第一个项目会在其周围绘制一个框:

List item with box around it

这似乎发生在应用栏被解雇时。我猜这是因为项目处于特定状态导致框出现,但我不确定是什么状态或如何清除它。在我的应用正常使用期间,该框不会出现。

感谢您提供的任何澄清或解决方案。

3 个答案:

答案 0 :(得分:1)

所以,问题是VisualState的{​​{1}}被设置为Button,然后没有被设置(因为你的鼠标没有离开控件的边界)因此触发PointedOver事件。这意味着,如果您希望以这种方式更改,则必须手动设置PointerExited的{​​{1}}。你可以在VisualState的{​​{1}}事件中执行此操作。基本上,使用ButtonAppBar的{​​{1}}属性的所有Closed进行递归检查。检查Children是否为Content。如果是,请使用AppBar设置其VisualTreeHelper

答案 1 :(得分:1)

我找到了解决此问题的简单方法。在按钮的Clicked / Tapped set Visibility代码中:

CreateNewDatabase.Visibility = Visibility.Collapsed;
CreateNewDatabase.Visibility = Visibility.Visible;

它会将按钮状态重置为正常。 希望这有帮助!

答案 2 :(得分:0)

我还想出了导致按钮周围黑框的原因 - 它表示该按钮具有焦点。

相当奇怪的是,我不确定为什么特定按钮会获得焦点,或者用户应该如何将焦点放在按钮上而不是随意发生,直到我想出来,我已经决定在默认的GridView项目样式中使用Visual Manager XAML注释掉Focus状态支持。