我已在ListBox中的DataTemplate与TargetNullValue在ListBox
<ListBox Grid.Column="1" Grid.Row="2" ItemsSource="{Binding People}" SelectedItem="{Binding SelectedPerson}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock OverridesDefaultStyle="True"
Background="{x:Null}"
Margin="0"
Padding="0"
IsHitTestVisible="True"
Text="{Binding TargetNullValue=None}"
/>
</DataTemplate>
</ListBox.ItemTemplate>
这完美的作品,在绑定列表中发生的任何空(没有)值的显示“无”以下的DataTemplate。问题是我无法点击Null值来选择它们。使用键盘进行选择可以完美实现,而不是使用鼠标。我能做些什么来使列表中的空值与任何其他值一样?
编辑:我还应该补充一点,我可以将TextBlock的背景更改为红色,并且它与其他人一样显示,所以我不认为这是无法点击的情况。我也用Snoop来看它,并且在视觉树中没有看到空项目和普通项目之间不同的任何属性。
编辑2:我应该补充一点,People实际上是一个代表数据库表的类。它使用ToString方法默认显示People对象。如果使用Path选项绑定到适当的字段,我会得到相同的效果,我认为这样会更容易阅读。
看来这个项目是不可选的键盘作为选择更改为虚线边框,而不是蓝色的提供了一个很好的解决方案背景。很奇怪。 – 2009-01-07 21:15:45
它是这样做的,但如果你在setter中放置了一个断点,它就会被调用,所以选择就会发生,listbox只是以不同的方式突出显示选择。 – 2009-01-07 21:20:01
我刚刚在控件上运行Snoop,我无法分辨它。所有项目都是ListBoxItems,但我无法找到差异,我只是在Reflector中花了一段时间尝试查看渲染如何工作的任何更改。 – 2009-01-07 21:22:26