WPF DisplayMemberProperty не работает должным образом в коде позади - PullRequest
0 голосов
/ 12 октября 2018

У меня есть простой ObservableCollection класса Person, который я пытаюсь связать в коде.Все отлично связывается, за исключением DisplayMemberProperty, который при выборе элемента в раскрывающемся списке просто показывает значение Null в текстовой части раскрывающегося списка.Если я добавлю DD.DisplayMember = "Lastname", он будет работать нормально, но поскольку мне нужно добавить элементы управления во время выполнения, и не все будут выпадающими, мне нужно, чтобы это работало как привязка.

Мой XAML:

<Syncfusion:SfMultiColumnDropDownControl x:Name="DD" HorizontalAlignment="Left" VerticalAlignment="Top" Width="300" Margin="20"/>

Мой код:

With OC
    .Add(New Person With {.Id = "1", .Lastname = "Smith"})
    .Add(New Person With {.Id = "2", .Lastname = "Jones"})
    .Add(New Person With {.Id = "3", .Lastname = "Johnson"})
End With

Dim ItemsSourceBinding As New Binding
With ItemsSourceBinding
    .Source = OC
    .Mode = BindingMode.OneWay
    .UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
End With
BindingOperations.SetBinding(DD, SfMultiColumnDropDownControl.ItemsSourceProperty, ItemsSourceBinding)

Dim SelectedItemBinding As New Binding
With SelectedItemBinding
    .Source = Report
    .Path = New PropertyPath("MyPerson")
    .Mode = BindingMode.TwoWay
    .UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged 
End With
BindingOperations.SetBinding(DD, SfMultiColumnDropDownControl.SelectedItemProperty, SelectedItemBinding)

Dim DisplayMemberBinding As New Binding
With DisplayMemberBinding
    .Source = OC
    .Path = New PropertyPath("Lastname")
    .Mode = BindingMode.OneWay
    .UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
End With
BindingOperations.SetBinding(DD, SfMultiColumnDropDownControl.DisplayMemberProperty, DisplayMemberBinding)

1 Ответ

0 голосов
/ 12 октября 2018

DisplayMemberProperty не должен быть связанным.Предполагается, что ему присвоено имя, т.е. string, свойства:

DD.DisplayMemberProperty = "LastName"

Если вы связываете его со свойством источника, вам необходимо убедиться, что это свойство возвращает string «Фамилия», а не значение свойства Lastname.

...