我将ListView添加到XAML页面,并希望使用ListViewItems的默认样式,以便在选择项目时突出显示边框并显示复选框字形。
然而,我似乎无法做到这一点;单击项目以选择它不会在屏幕上进行任何视觉更改。我通过处理SelectionChanged事件并设置断点来验证是否正在选择该项目。选择了该项目,但在视觉上没有任何不同。
我确实定义了一个ListViewItem样式来覆盖拉伸值,并且认为这可能会杀死所有默认样式,但是删除提到ListViewItem或ListView的每个自定义样式仍会使其没有默认样式。
我查看了generic.xaml,其中包含所选状态的默认样式和复选标记符号,但它们似乎没有应用。
我甚至可以进行混合并编辑ItemContainerStyle来创建副本,它从generic.xaml中提取所有内容并将其分配给模板。但是,这些样式被忽略了,我没有看到字形,即使在混合时我选择了不同的视觉状态,例如"选择。
我改变了背景,以防万一由于颜色相同而无形,但它似乎并不存在......
什么可能导致默认样式被忽略,即使它们被复制并直接分配?
答案 0 :(得分:0)
所以在比较Blend创建副本和generic.xaml样式时生成的样式后,看起来这是一个错误的样式定义导致的错误。
generic.xaml中的ListViewItem样式与文档中的ListViewItem模板不同:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj709921.aspx
具体而言,上面列出的文档模板在故事板中定义了另一个动画,用于"选择"和#34; SelectedUnfocused"规定:
<DoubleAnimation Storyboard.TargetName="SelectedCheckMark"
Storyboard.TargetProperty="Opacity"
Duration="0" To="1" />
将此部分添加到样式中可以解决问题,现在可以看到视觉状态。
所以看来这里的解决方案是添加缺少的部分,或者更好的是,只需使用记录的模板作为Windows Phone中ListViewItem的基础,因为generic.xaml中的默认模板不完整。 / p>
我不知道这是不是设计但确实感觉像是一个错误。