C# UWP VisualStateManager更改列数ListView

C# UWP VisualStateManager更改列数ListView,c#,xaml,win-universal-app,C#,Xaml,Win Universal App,我得到了表示网格的简单的ListView,我想根据窗口宽度切换列数。 以下是列表视图的代码: <Page.Resources> <ResourceDictionary Source="ms-appx:///Resources/Dictionary.xaml"/> </Page.Resources> <ListView x:Name="lvCurrencyList" /> <VisualStateManager.VisualStateG

我得到了表示网格的简单的
ListView
,我想根据
窗口宽度切换列数。
以下是
列表视图的代码:

<Page.Resources>
    <ResourceDictionary Source="ms-appx:///Resources/Dictionary.xaml"/>
</Page.Resources>
<ListView x:Name="lvCurrencyList" />
<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
        <VisualState>
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="720" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="lvCurrencyList.HeaderTemplate" Value="{StaticResource CurrencyListHeaderTemplate}" />
            </VisualState.Setters>
        </VisualState>
        <VisualState>
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="0" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="lvCurrencyList.HeaderTemplate" Value="{StaticResource CompactCurrencyListHeaderTemplate}" />
                </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups> 

但该代码对我不起作用

您错误地定义了DataTemplate资源。应该是

<DataTemplate x:Key="CurrencyListHeaderTemplate"> instead x:Name.
而不是x:Name。

请查看此项以了解x:key和x:name之间的差异,问题出在
VisualStateManager
定义中,它位于错误的位置。我把它添加到
页面的子页面中。网格

应该是x:Name。希望它能起作用。我在我这边测试了你的代码,效果很好。那么你能和我分享一下你的观点吗?这对我没有帮助。如果我使用
HeaderTemplate=“{StaticResource CompactCurrencyListHeaderTemplate}”
ListView
添加新行,而不将x:Name更改为x:Key,则将按预期添加模板。但这在
VisualStateManager
中不起作用,即使使用
x:Key
WinRT也不支持样式内的TemplateBinding,不是吗?您是否在页面内编写了datatemplate定义。参考资料?否,它们位于单独的文件中。现在我尝试只更改列表的
Background
属性,这也行不通^(
<DataTemplate x:Key="CurrencyListHeaderTemplate"> instead x:Name.