Выбор элемента в ComboBox в WPF для выполнения действия - PullRequest
2 голосов
/ 12 сентября 2011

Я пытаюсь инициировать действие, основанное на выделении в ComboBox, которое я создал в WPF.Я довольно новичок в WPF и C #.Мой ComboBox имеет

<ComboBox x:Name="SampleComboBox" Width="100" ItemsSource="{Binding Path=NameList}" />

, где NameList является свойством List в коде позади.Теперь я хочу сгенерировать действие на основе выбора в ComboBox и не знаю, с чего начать.Спасибо.

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Вам нужно будет добавить метод для обработки события SelectionChanged.Вы можете сделать это в коде:

this.MyComboBox.SelectionChanged += new SelectionChangedEventHandler(OnSelectionChanged);

или в XAML:

<ComboBox x:Name="SampleComboBox" Width="100" 
ItemsSource="{Binding Path=NameList}" SelectionChanged="OnSelectionChanged" />

, где вы можете сделать что-то с выбранными элементами:

private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{
     ComboBoxItem cbi = (ComboBoxItem) (sender as ComboBox).SelectedItem;
}
0 голосов
/ 12 сентября 2011

Является ли это конечным набором значений в этом NameList, который является для этого ItemsSource?

Почему бы не изменить этот xaml следующим образом:

<ComboBox x:Name="SampleComboBox" Width="100" SelectedItem="{Binding TheItem}" ItemsSource="{Binding Path=NameList}" />

, а затем в вашей ViewModel для этого, иметь что-то вроде:

public static readonly DependencyProperty TheItemProperty=
    DependencyProperty.Register("TheItem", typeof(string), typeof(OrderEditorViewModel), 
        new PropertyMetadata((s, e) => {
            switch (e.NewValue) {
                case "SomeValue":
                    // Do something
                    break;
                case "SomeOtherValue":
                    // Do another thing
                    break;
                default:
                    // Some default action
                    break;
             }
     }));

public string TheItem{

  get { return (string)GetValue(TheItemProperty); }
  set { SetValue(TheItemProperty, value); }
}

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

0 голосов
/ 12 сентября 2011

Вы можете получить выбранный объект, написав SampleComboBox.SelectedItem.
Это вернет экземпляр элемента в вашем списке источников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...