【发布时间】:2014-10-13 18:24:50
【问题描述】:
当点击 longListSelector 中的项目时,我想在我的数据模板中添加一个图标和另一个文本块。此外,当点击另一个项目时,我想从先前选择的项目中删除此图标和文本块并展开新的选定项目。我怎样才能做到这一点?
【问题讨论】:
标签: windows-phone-8 longlistselector
当点击 longListSelector 中的项目时,我想在我的数据模板中添加一个图标和另一个文本块。此外,当点击另一个项目时,我想从先前选择的项目中删除此图标和文本块并展开新的选定项目。我怎样才能做到这一点?
【问题讨论】:
标签: windows-phone-8 longlistselector
选项1(通过代码隐藏修改)
你可以修改我的 ListBox 折叠代码来做你想做的事:ListBox Collapse。您需要将边框更改为<Grid>,然后循环遍历.Children 以隐藏/显示额外的文本块和图标。始终保存对当前 SelectedItem 的引用,这样当 SelectionChanged 事件触发时,您可以隐藏先前的选择,然后显示较新的 Selected Item。
选项 2:创建一个 ItemControl,您可以将其用作 LongListSelector 的 Item.DataTemplate 的一部分
使用此方法,您想创建自己的 VisualState(Selected、NotSelected.. 或任何您想要的)。
在选定(故事板)中,您将额外的文本块/图标的可见性更改为可见。
在 NotSelected (StoryBoard) 中,您将额外的 Textblock/Icon 的 Visibility 更改为 Collapse。
然后当 LongListSelector 上的 SelectionChanged 事件时,循环遍历您的 ItemSources 并将其与 SelectedItem 进行比较。
如果当前项目是 SelectedItem 则 VisualStateManager.GoToState(your_control, "Selected") 否则 VisualStateManager.GoToState(your_control, "NotSelected")
这将完成您想要的整个交互。
【讨论】: