2013-06-15 3 views
3

У меня есть пользовательский элемент управления WPF (FileSelectionView.xaml) с полем со списком, в котором отображаются данные. Мой WPF выглядит следующим образом:WPF Combobox SelectedIndex не работает

<ComboBox Width="250" 
      HorizontalAlignment="Left" 
      ItemsSource="{Binding Path=FileTypes}" 
      SelectedItem="{Binding Path=FileType, Mode=TwoWay}" /> 

В моей модели представления файла (FileSelectionViewModel.cs), у меня есть список, который связывается с этим элементом управления, который успешно работает. Данные выглядит следующим образом:

<Please select a file> 
File Type 1 
File Type 2 

Я попытался установить SelectedIndex свойство 0, так что «< Пожалуйста, выберите файл >» появляется, когда пользовательский элемент управления делает, но он не работает. Он ничего не показывает, но когда я нажимаю на поле со списком, я вижу все свои предметы.

Есть ли что-то, что мне не хватает?

+0

После изменения выбранного индекса вы оповещать вид с RaisePropertyChanged события – Jasti

+0

Я попытался установить выбранный индекс в xaml. Будет ли ваш вопрос по-прежнему применяться? – coson

ответ

2

Вместо использования SelectedIndex, после обновления ItemsSource, обновить выбранный элемент с помощью следующего кода из ViewModel

FileType = "Please select a value"; 
+0

Спасибо. Это то, что я искал. – coson

+0

Чтобы уточнить для других, вместо привязки к выбранному индексу, просто инициализируйте свойство привязки SelectedItem (в данном случае FileType) к соответствующему элементу в поле со списком (например, FileTypes [0] или независимо от вашего объекта по умолчанию) , –

1

IT работает нормально, если вы делаете это в XAML, я не вижу его в вашем XAML, вы забыли?

<ComboBox Width="250" 
       HorizontalAlignment="Left" 
       ItemsSource="{Binding Path=FileTypes}" 
       SelectedItem="{Binding Path=FileType, Mode=TwoWay}" 
      SelectedIndex="0"/> 

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

Смежные вопросы