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