将文本与 WPF 组合框中的当前选定项连接起来,而不会影响数据绑定

本文关键字:起来 连接 数据绑定 影响 组合 WPF 文本 | 更新日期: 2023-09-27 18:35:29

这是我用于组合框的示例 XAML 代码

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

我只想将一个字符串(例如"默认")连接到组合框中当前选定的项目。但是,这不应该反映在数据对象"SelectedPerson"中。

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

如果我打算在视图模型对象 SelectedPerson 中连接它,它实际上最终会修改基础数据。因此,我只想仅在Combox框中为选定的项目显示一个串联字符串。

提前谢谢。

将文本与 WPF 组合框中的当前选定项连接起来,而不会影响数据绑定

可以使用 DataTempalte 通过在组合框项的 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>