C# 在不影响数据绑定的情况下,将文本与WPF组合框中当前选定的项连接起来

C# 在不影响数据绑定的情况下,将文本与WPF组合框中当前选定的项连接起来,c#,wpf,xaml,mvvm,wpf-controls,C#,Wpf,Xaml,Mvvm,Wpf Controls,这是我的combobox的XAML示例代码 <ComboBox x:Name="cboPerson" SelectedIndex="0" ItemsSource="{Binding PersonCollection}" SelectedItem="{Binding SelectedPerson, Mode=TwoWay}"/> 我所要做的就是将一个字符串(比如“Default”)连接到组合框中当前选定的项。但是,这不应该反映在数据对象“SelectedPerson”中 当组

这是我的combobox的XAML示例代码

 <ComboBox x:Name="cboPerson" SelectedIndex="0"
ItemsSource="{Binding PersonCollection}" 
SelectedItem="{Binding SelectedPerson, Mode=TwoWay}"/>

我所要做的就是将一个字符串(比如“Default”)连接到组合框中当前选定的项。但是,这不应该反映在数据对象“SelectedPerson”中

当组合框展开时,这只是为了让用户知道当前选择的人是什么

如果我打算在viewmodel对象SelectedPerson中连接此对象,它实际上最终会修改底层数据。所以,我只想在Combox框中为selectedItem显示一个串联字符串


提前谢谢

您可以使用DataTempalte来实现这一点,方法是在combobox项的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>


SelectedItem=“{Binding SelectedPerson,Mode=TwoWay,
TargetNullValue=Default
}”
。HTHDid您是否尝试使用StringFormat?SelectedItem=“{Binding SelectedPerson,Mode=TwoWay,StringFormat={}{0}(默认值)}”@nkonishvt Nope。这不管用。我在发帖之前就试过了。