有没有一种方法可以动态更改列表视图及其项目样式

时间:2019-09-19 19:56:01

标签: uwp windows-10

我正在开发一个在页面上具有几个listview控件的应用程序(Windows 10桌面应用程序)。我们正在使用游戏板在元素之间导航。
我希望能够在获得焦点时更改ListView(及其项)的样式。因此,它是一种样式,可以转换为非重点样式。然后,当我的焦点更改为下一个样式时,我希望失去焦点的列表视图变回其样式。

我已经定义了2种样式,但是试图找出如何动态更改样式。

以此为隐喻。我的应用程序主要是一个黑暗的主题。当您不与所有控件进行交互时,所有控件都会被“静音”,但是当控件获得焦点时,我希望将其更改为较浅的主题。

一个列表视图由页眉,项目,页脚组成,我希望整个样式集作为一个单元进行更改。

我目前正在考虑关注焦点事件的发生和失败,但是我不确定这是正确的方法。

1 个答案:

答案 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;
}

如果创建相应的主题资源,则将满足您的要求。

最诚挚的问候。