DisplayMemberPath в ComboBox не работает, но привязка кажется корректной, не удается отобразить DisplayMemberPath

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

Вот простая версия моего исходного кода (возможно, ваша выглядит так)

.xaml (просмотр):

<ComboBox SelectedItem="{Binding WindDirection}" ItemsSource="{Binding WindDirections}" DisplayMemberPath="DisplayText" IsEditable="False"/>

.cs (ViewModel):

public class WindDirectionViewModel{
   //I realize that there may be problems in this code, it's not my real code, just a quick sample

   ...code

   List<WindDirectionObject> WindDirections = new List<WindDirectionObject>();
   WindDirectionObject WindDirection = new WindDirectionObject(); 

   ...code

   public string DisplayText = WindDirections.First(x => x.Equals(WindDirection)).DisplayString;

   ...code

}

Весь код работает отлично, и тот же (.cs) ViewModel даже корректно отображается в другом (.xaml) представлении, но в этом представлении он работает неправильно. Точная проблема в том, что при первом открытии представления в ComboBox нет текста, хотя DisplayText имеет значение! Точки останова показывают, что значение DisplayText правильно вычисляется и все, но это значение не будет отображаться при первом открытии представления.

1 ответ

Если вы используете DisplayMemberPath атрибут в поле со списком.xaml - вы должны поместить ItemsSource атрибут перед SelectedItem атрибут в.xaml... или DisplayMemberPath значение не отображается.

До:

<ComboBox ItemsSource="{Binding WindDirections}" SelectedItem="{Binding WindDirection}" DisplayMemberPath="DisplayText" IsEditable="False"/>

После:

<ComboBox SelectedItem="{Binding WindDirection}" ItemsSource="{Binding WindDirections}" DisplayMemberPath="DisplayText" IsEditable="False"/>

Bam. Работает отлично. Это может не решить вашу проблему, но, безусловно, решило мою... надеюсь, это ускорит ваше время разработки.:)

Другие вопросы по тегам