繁体   English   中英

C# ComboBox SelectedItem 不更新

[英]C# ComboBox SelectedItem not Updating

我的问题是,在我在 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");
    }
}

如果我打开组合框,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 添加到您的组合框。

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>

看看这个 MSDN 链接

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

你好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM