在 UWP 中,我使用带有项目模板的多选 ListView,如下所示:
<ListView
ItemsSource="{x:Bind ItemsSource, Mode=OneWay}"
ItemTemplate="{x:Bind LineTemplate, Mode=OneWay}"
SelectionMode="Multiple"
>
</ListView>
Run Code Online (Sandbox Code Playgroud)
问题是UWP添加的复选框的样式。在我程序的其余部分中,我有自己的复选框样式,而 ListView 中的样式不匹配。
我看不到任何设置复选框样式的方法,也看不到 ListViewItem 模板中 ListViewItemPresenter 的任何代码。
也许我可以设置 IsMultiSelectCheckBoxEnabled="False",然后在 ListViewItem 中包含我自己的 CheckBox。我看到了如何在 ListViewItem 样式中将 CheckBox 添加到模板中:我可以将它放在 ListViewItemPresenter 之前(例如使用水平 StackPanel)。然后我可以绑定 IsChecked="{TemplateBinding IsSelected}"。
但是,如果我这样做,则会出现异常“ListViewItemPresenter 只能用作 ListViewItem 模板中的第一个子项”。
有没有或多或少简单的方法来做到这一点?
--sjb
PS 显然 ListViewItemPresenter 非常特别......我的印象是它内置了很多优化,不应该只是扔掉。