繁体   English   中英

设置ListView.SelectedItem的样式-Windows Store应用

[英]Styling ListView.SelectedItem - Windows Store App

我有一个这样的ListView:

<ListView ItemsSource="{Binding Source}" SelectionMode="Single"
ItemTemplate="{StaticResource MyItemTemplate}"
IsItemClickEnabled="True" ItemClick="ListView_OnItemClick">
</ListView>

我要实现的是,将选择/单击的元素设置为不同于其他元素的样式,然后在选择另一个元素时再次返回。 对我来说,最简单的方法是,如果有某种方法可以更改所选项目的DataTemplate。 如果那是不可能的,那么任何解决方案都将受到赞赏。

我尝试使用DataTemplateSelector,但无法正常工作。 不确定所选项目的更改是否会重新选择模板。

打算在数据类型更改时使用DataTemplateSelector 例如,假设您有一个名为Person的基类和两个继承的ProfessorStudent类。 您可能会有一个既包含教授又包含学生的名为People的集合。 在显示教授对象时,可以使用DataTemplateSelector来使用一个数据模板,而在显示学生对象时,可以使用DataTemplateSelector来使用一个数据模板。

DataTemplateSelectorDataTemplate可能不是您想要的,因为它们通常与选择没有任何关系。 选中某项时看到的所有UI元素(选中,紫色边框等)都是ItemContainer的一部分。 在运行时, DataTemplate放置在ItemContainer的内部,您可以通过编辑ContainerTemplate进行更改。

在Expression Blend中,右键单击ListView,然后选择编辑其他模板->编辑生成的项目容器(ItemContainerStyle)->编辑副本 您需要给自定义容器命名,我建议将其保存在应用程序级别而不是当前页面(否则,您将无法在其他页面上使用它)。

给它起一个名字并单击“确定”后,Blend将切换到您正在编辑容器(而不是页面)的模式。 请确保您有开面板( 窗口-如果你没有看到它>美国 ),你应该看到一堆状态。 您要编辑的一个称为“ 选定” ,它在名为“ SelectionStates”的组中。

完成更改后,单击“ 对象和时间轴”面板顶部的按钮,该按钮看起来像带有向上箭头的水平线(将鼠标悬停在此按钮上时,它将显示范围返回[页面]” ) 。 现在,您将回到编辑页面,而不是编辑容器。 运行您的应用程序,您应该看到差异。

注意 :使用此方法可以更改有关容器的任何内容。 诸如边框之类的东西,或使该项目在3D空间中变大或变小或倾斜的属性(使用属性窗格中“变换”组下的“投影”进行倾斜)。 但是,您将无法显示或隐藏DataTemplate的一部分。 例如,当客户未被选中时,您将无法隐藏他们的名字。 对于这些类型的更改,您可能必须使用自己的自定义DataTemplateSelector进行尝试。 但是我不知道当要求DataTemplateSelector生成模板时是否可以检查是否选择了一个项目。

开发支持,设计支持以及更多出色的功能: http : //bit.ly/winappsupport

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM