Элементы WPF ComboBox (привязка ItemsSource) не отображаются - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь связать List<MyClass> с ComboBox.Ниже приведен простой код, который я реализовал:

C #

cmbList.ItemsSource = DbMain.GetNameList();

XAML

<StackPanel Grid.Row="0" Orientation="Horizontal" >

    <TextBlock Text="Names:" Margin="5,0,5,0" VerticalAlignment="Center" Width="50" Visibility="Collapsed"/>

    <ComboBox x:Name="cmbList" Width="200" SelectionChanged="cmbList_SelectionChanged"
      DisplayMemberPath="DisplayName" SelectedValuePath="DisplayName" Foreground="Black"/>

</StackPanel>

Проблема

Значения List<MyClass> извлекаются из DbMain.GetNameList() и связываются в ComboBox, но они не отображаются.Когда я выполняю SelectionChanged, я могу также получить доступ к SelectedItem.Проблема только в том, что элементы не видны.

enter image description here

Ошибка в окне вывода

System.Windows.Data Error: 40 : BindingExpression path error: 'DisplayName' property not found on 'object' ''MyClass' (HashCode=804189)'. BindingExpression:Path=DisplayName; DataItem='MyClass' (HashCode=804189); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

1 Ответ

0 голосов
/ 18 декабря 2018

Используя это связывающее выражение, вы заявляете, что существует свойство с именем DisplayName в MyClass, но во время выполнения, поскольку такого свойства нет - выопределите DisplayName как поле , поэтому в вашем случае оно не работает - поэтому ComboBox показывает пустые элементы.

<ComboBox x:Name="cmbList" 
  DisplayMemberPath="DisplayName"

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

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