我正在开发一个在页面上具有几个listview控件的应用程序(Windows 10桌面应用程序)。我们正在使用游戏板在元素之间导航。
我希望能够在获得焦点时更改ListView(及其项)的样式。因此,它是一种样式,可以转换为非重点样式。然后,当我的焦点更改为下一个样式时,我希望失去焦点的列表视图变回其样式。
我已经定义了2种样式,但是试图找出如何动态更改样式。
以此为隐喻。我的应用程序主要是一个黑暗的主题。当您不与所有控件进行交互时,所有控件都会被“静音”,但是当控件获得焦点时,我希望将其更改为较浅的主题。
一个列表视图由页眉,项目,页脚组成,我希望整个样式集作为一个单元进行更改。
我目前正在考虑关注焦点事件的发生和失败,但是我不确定这是正确的方法。
答案 0 :(得分:1)
当控件获得焦点时,我希望它变成一个较浅的主题。
我的理解是,当ListView
失去焦点时,您想更改控件的主题。
您可以收听ListView的 GettingFocus 和 LostFocus 事件。
代码如下:
<ListView GettingFocus="ListView_GettingFocus" LostFocus="ListView_LostFocus">
<!-- List items -->
</ListView>
private void ListView_GettingFocus(UIElement sender, GettingFocusEventArgs args)
{
(sender as ListView).RequestedTheme = ElementTheme.Light;
}
private void ListView_LostFocus(object sender, RoutedEventArgs e)
{
(sender as ListView).RequestedTheme = ElementTheme.Dark;
}
如果创建相应的主题资源,则将满足您的要求。
最诚挚的问候。