Windows Phone 8.1 ListViewItem默认XAML样式被忽略(generic.xaml)

时间:2015-07-01 17:42:18

标签: xaml windows-phone-8.1 listviewitem

我将ListView添加到XAML页面,并希望使用ListViewItems的默认样式,以便在选择项目时突出显示边框并显示复选框字形。

然而,我似乎无法做到这一点;单击项目以选择它不会在屏幕上进行任何视觉更改。我通过处理SelectionChanged事件并设置断点来验证是否正在选择该项目。选择了该项目,但在视觉上没有任何不同。

我确实定义了一个ListViewItem样式来覆盖拉伸值,并且认为这可能会杀死所有默认样式,但是删除提到ListViewItem或ListView的每个自定义样式仍会使其没有默认样式。

我查看了generic.xaml,其中包含所选状态的默认样式和复选标记符号,但它们似乎没有应用。

我甚至可以进行混合并编辑ItemContainerStyle来创建副本,它从generic.xaml中提取所有内容并将其分配给模板。但是,这些样式被忽略了,我没有看到字形,即使在混合时我选择了不同的视觉状态,例如"选择。

我改变了背景,以防万一由于颜色相同而无形,但它似乎并不存在......

什么可能导致默认样式被忽略,即使它们被复制并直接分配?

1 个答案:

答案 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>

我不知道这是不是设计但确实感觉像是一个错误。