首页 文章

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

提问于
浏览
0

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

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

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

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

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

我改变了背景,以防它因为颜色相同而不可见,但它似乎并不存在......

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

1 回答

  • 0

    因此,在创建副本的Blend和generic.xaml样式之间比较生成的样式之后,看起来这是由错误的样式定义导致的错误 .

    generic.xaml中的ListViewItem样式与文档中的ListViewItem模板不同:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj709921.aspx

    具体来说,上面列出的文档模板在故事板中为“Selected”和“SelectedUnfocused”状态定义了一个额外的动画:

    <DoubleAnimation Storyboard.TargetName="SelectedCheckMark"
                Storyboard.TargetProperty="Opacity"
                Duration="0" To="1" />
    

    将此部分添加到样式中可以解决问题,并且可视状态现在符合预期 .

    因此,似乎这里的解决方案是添加缺少的部分,或者更好的是,只需使用记录的模板作为Windows Phone中ListViewItem的基础,因为generic.xaml中的默认模板不完整 .

    我不知道这是不是设计但确实感觉像是一个bug .

相关问题