【发布时间】:2016-05-25 11:48:42
【问题描述】:
我有一个简单的ListBox,它的条目是从视图模型中的ObservableCollection<T> 绑定的。此外,我还绑定了一个 SelectedItem 属性。
<ListBox ItemsSource="{Binding Entries}" SelectedItem="{Binding SelectedEntry}" />
对于一些需求我需要修改实际的列表框项,所以我做了一个自定义DataTemplate这样的:
<DataTemplate>
<ListBoxItem ... />
</DataTemplate>
然而,只要有DataTemplate,SelectedItem 绑定就会停止工作。无论我做什么,它都不会触发。如果我把整个DataTemplate 拿走,它就会重新开始工作。既然我有一个自定义的ListBoxItem,我是否必须以某种方式将自己绑定到ListBox 的SelectedItem 属性?还是我只是在这里遗漏了什么?
完整代码
<ListBox x:Name="Entries" ItemsSource="{Binding Entries}" Grid.Column="1" Margin="5, 5, 0, 5" SelectedItem="{Binding SelectedEntry}" >
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Height" Value="5" />
<Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="0" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem Background="{Binding EntryColor}"
ToolTipService.InitialShowDelay="0"
ToolTip="{Binding SequenceNumber, StringFormat=Sequence {0:D12}}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【问题讨论】:
-
你不需要
ItemTemplate。只需将这些属性放入样式中即可。
标签: c# wpf mvvm listbox caliburn.micro