none
wpf ComboBox IsSelected не устанавливается RRS feed

  • Вопрос

  • Добрый день!

    Есть проект C#, WPF, MVVMLight

    Заполняю ObservableCollection и передаю контролу ComboBox.

    //моя коллекция
    ObservableCollection<Config> configCollection = new ObservableCollection<Config>();
    
     public class Config
        {
            public uint Id { get; set; }
            public string Title { get; set; }
            public bool Checked { get; set; }
        }
    
    
    //хочу, чтобы было выбрано это значение в списке
      configCollection[10].Checked = true;


    Я хочу, чтобы при открытии окна было выбрано нужное значение в ComboBox

        <ComboBox Height="24" Width="200" Margin="10,0,0,0" ItemsSource="{Binding configCollection, Mode=TwoWay}">
                    <ComboBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ComboBoxItem}">   
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=Checked}" Value="true">                        
                                    <Setter Property="IsSelected" Value="True"></Setter>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </ComboBox.ItemContainerStyle>
    
                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <ComboBoxItem>
                                <ComboBoxItem.Content>                                                   
                                    <TextBlock Text="{Binding Path=Title}"></TextBlock>                         
                                </ComboBoxItem.Content>
                            </ComboBoxItem>                      
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                </ComboBox>


    Открываю окно, коллекция в выпадающем списке присутствует, но значение не выбрано. Оно выбирается только тогда, когда я нажму мышкой 1 раз по контролу

    Как мне сделать, чтобы выбранное значение сразу подставлялось в контроле в качестве выбранного?

    • Изменено ilya83 27 ноября 2017 г. 13:28
    27 ноября 2017 г. 13:27

Ответы

  • Не думаю что это будет работать. Даже если бы и работало то сам по себе метод проблематичен так как можно установить Checked в true сразу на нескольких значениях (что имеет смысл для Checked но не имеет смысла для IsSelected).

    Попробуйте так (или лучше через привязку):

    //хочу, чтобы было выбрано это значение в списке
      comboBox.SelectedIndex = 10;

    Можно так же добавить привязку к SelectedItem. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа ilya83 28 ноября 2017 г. 5:53
    27 ноября 2017 г. 18:59
    Модератор

Все ответы

  • Не думаю что это будет работать. Даже если бы и работало то сам по себе метод проблематичен так как можно установить Checked в true сразу на нескольких значениях (что имеет смысл для Checked но не имеет смысла для IsSelected).

    Попробуйте так (или лучше через привязку):

    //хочу, чтобы было выбрано это значение в списке
      comboBox.SelectedIndex = 10;

    Можно так же добавить привязку к SelectedItem. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа ilya83 28 ноября 2017 г. 5:53
    27 ноября 2017 г. 18:59
    Модератор
  • Судя по всему вы про привязку данных? То у Вас не правильно создан класс. Прочитайте про интерфейс INotifyPropertyChanged.
    27 ноября 2017 г. 20:36
  • Ваше идея работает. Спасибо
    28 ноября 2017 г. 5:53
  • с MVVMLight надо как-то по-другому делать вроде
    28 ноября 2017 г. 5:54