当我在鼠标驱动设备上测试我的应用程序时,我会看到一些我想尝试解决的奇怪突出问题。
第一种情况发生在我调用应用栏时,将鼠标悬停在按钮上(此时按钮变为灰色),然后按Escape键关闭应用栏。如果我再次调用应用程序栏,则按钮保持灰色,即使鼠标不在其上,并保持该状态,直到我将鼠标移到它上面然后再移开。
我无法立即看到按钮的属性,当应用栏被解除时,我可以重置该属性以清除该状态。
我看到的另一个奇怪之处在于,有时页面列表中的第一个项目会在其周围绘制一个框:
这似乎发生在应用栏被解雇时。我猜这是因为项目处于特定状态导致框出现,但我不确定是什么状态或如何清除它。在我的应用正常使用期间,该框不会出现。
感谢您提供的任何澄清或解决方案。
答案 0 :(得分:1)
所以,问题是VisualState
的{{1}}被设置为Button
,然后没有被设置(因为你的鼠标没有离开控件的边界)因此触发PointedOver
事件。这意味着,如果您希望以这种方式更改,则必须手动设置PointerExited
的{{1}}。你可以在VisualState
的{{1}}事件中执行此操作。基本上,使用Button
对AppBar
的{{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状态支持。