这是我用于组合框的示例XAML代码
<ComboBox x:Name="cboPerson" SelectedIndex="0"
ItemsSource="{Binding PersonCollection}"
SelectedItem="{Binding SelectedPerson, Mode=TwoWay}"/>
我想要做的就是将一个字符串(比如'Default')连接到组合框中当前选中的项目。但是,这不应该反映在数据对象'SelectedPerson'中。
这只是为了让用户知道当扩展组合框时当前选择的人是什么。
如果我打算在viewmodel对象SelectedPerson中连接它,它实际上最终会修改底层数据。所以,我只想在Combox框中为selectedItem显示一个串联字符串。
提前致谢。
答案 0 :(得分:1)
您可以使用DataTemplate通过在组合框项目的IsSelected属性上使用数据触发器来实现此目的:
<ComboBox>
<ComboBox.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<TextBlock Text="Default: " Name="txtSelected" Visibility="Collapsed"/>
<TextBlock Text="{Binding}"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ComboBoxItem}}" Value="True">
<Setter TargetName="txtSelected" Property="Visibility" Value="Visible"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>