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.