C#ComboBox SelectedItem未更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#ComboBox SelectedItem未更新相关的知识,希望对你有一定的参考价值。

我的问题是,在我选择ComboBox中的一个项目后,组合框的第一个项目或“默认”项目保持为空,但如果我点击组合框,则显示下方的值是可选择的等等但我希望点击的项目显示在“默认/第一”的地方。

到目前为止我尝试了什么 XAML:

<ComboBox Margin="55,0,0,10" Height="20" Width="145" VerticalAlignment="Center" HorizontalAlignment="Left" 
    ItemsSource="{Binding TabItems, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay}" 
    SelectedItem="{Binding SelectedItem, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay}" 
    DisplayMemberPath="Header">
</ComboBox>

属性:

public TabItem SelectedItem {
    get {
        return _selectedItem;
    }
    set {
        UpdateTCVCollection(value);
        _selectedItem = value;
        NotifyPropertyChanged("SelectedItem");
    }
}

如果我打开组合框,会突出显示选择项,但我也希望它在ComboBox关闭时显示在“第一个位置”。

答案

您可以在索引更改时添加方法,然后删除用户选择的项目并在开头添加它。

我已将Sorted的值设置为false,因为这样您选择的值将不会在ComboBox中重新组织。

private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) {
    RadItem selectedItem = ComboBox1.SelectedItem as RadItem;

    if (selectedItem != null) {
        ComboBox1.Items.Remove(selectedItem);
        ComboBox1.Items.Sorted = true;
        ComboBox1.Items.Sorted = false;
        ComboBox1.Items.Insert(0, selectedItem);
        ComboBox1.Text = selectedItem.Text;
    }
}
另一答案

将UpdateSourceTrigger添加到Combobox。

UpdateSourceTrigger=PropertyChanged

例:

<ComboBox Margin="55,0,0,10" Height="20" Width="145" VerticalAlignment="Center" HorizontalAlignment="Left" 
    ItemsSource="{Binding TabItems, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay}" 
    SelectedItem="{Binding SelectedItem, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
    DisplayMemberPath="Header">
</ComboBox>

看看this MSDN link

这应该可以帮助您解决问题。

问候

以上是关于C#ComboBox SelectedItem未更新的主要内容,如果未能解决你的问题,请参考以下文章

ComboBox MultiBinding如何绑定到SelectedItem的属性

WPF ComboBox SelectedItem 动态绑定

WPF combobox selectedItem的问题

将文本框绑定到 comboBox.SelectedItem 的属性

WPF - Combobox SelectedItem 未设置?

如何使 Combobox(自定义 DataTemplate)中的 SelectedItem 仅显示项目的特定属性