C # ComboBox SelectedItem не обновляется - PullRequest
0 голосов
/ 30 августа 2018

Моя проблема в том, что после того, как я выбрал элемент в 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 закрыт.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Добавьте 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>

Посмотрите эту ссылку MSDN

Это должно помочь вам с вашей проблемой.

Привет

0 голосов
/ 30 августа 2018

Вы можете добавить метод, когда индекс изменился, затем удалить элемент, выбранный пользователем, и добавить его в начале.

Я установил значение 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...