首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Styling ListView.SelectedItem - Windows应用商店应用

Styling ListView.SelectedItem - Windows应用商店应用
EN

Stack Overflow用户
提问于 2013-02-27 21:15:29
回答 1查看 1.8K关注 0票数 2

我有一个这样的ListView:

代码语言:javascript
复制
<ListView ItemsSource="{Binding Source}" SelectionMode="Single"
ItemTemplate="{StaticResource MyItemTemplate}"
IsItemClickEnabled="True" ItemClick="ListView_OnItemClick">
</ListView>

我想要实现的是,将被选中/单击的元素设置为与其他元素不同的样式,并在选择另一个元素时再次返回。对我来说,最简单的方法是如果有某种方法可以更改所选项目的DataTemplate。如果这是不可能的,任何类型的解决方案都是非常感谢的。

我试着用DataTemplateSelector,但我不能让它工作。不确定当所选项目发生更改时是否会重新选择模板。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-28 02:43:37

DataTemplateSelector用于在数据类型发生变化时使用。例如,假设您有一个名为Person的基类,以及两个继承类教授和学生。您可以有一个名为People的集合,其中既包含教授又包含学生。在显示教授对象时,您可以使用DataTemplateSelector来使用一个数据模板,而在显示学生对象时,可以使用另一个数据模板。

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

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

在你给它命名并点击OK之后,Blend将切换到你正在编辑容器(而不是页面)的模式。确保您已经打开了状态面板(如果您看不到它,请打开窗口->状态),您应该会看到一堆状态。您要编辑的文件名为Selected,它位于名为SelectionStates.的组中

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

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

开发支持,设计支持和更多令人敬畏的好处即将到来:http://bit.ly/winappsupport

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15113047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档