UWP AutoGenerateProperty показывает две коллекции в DisplayMemberPathCollection - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь изменить в comboBox или каталоге отображение свойства «Имя» из набора коллекций, чтобы отобразить две из них, например «Имя» и «Возраст».

Я уже пытался добавить его в качестве второго параметра [DisplayMemberPathCollection ( "Название", "SecondString")] и изменив атрибут так, чтобы он принимал два параметра.

//The autogenerated property in the model:

[AutoGenerateProperty]
[Display("User")]
[PropertyOrder(1)]
[DisplayMemberPathCollection("Name")]
[SelectedItemCollection("SelectedUser")]

//I changed it to this:
[AutoGenerateProperty]
[Display("User")]
[PropertyOrder(1)]
[DisplayMemberPathCollection("Name","Age")]
[SelectedItemCollection("SelectedUser")]

//The attribute modification I made to get two parameters:

public DisplayMemberPathCollectionAttribute(string first = "", string second = "")
{
 DisplayMemberPath = first + second;
}

Я бы хотел, чтобы эти два поля отображались в комбо, но что-то просто не работает, и я пока не нашел ничего полезного

1 Ответ

0 голосов
/ 03 июля 2019

То, что вы делаете, было невозможно. DisplayMemberPath не поддерживает объединенное имя поля. Правильный способ состоит в том, чтобы создать новое поле для объединения двух полей и сделать так, чтобы 'DisplayMemberPathCollection' ссылалась на новое поле.

Например, вы можете определить 'FullName' в классе вашей модели:

public class User:PropertyChangeBase
{
    private string name;

    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            NotifyPropertyChanged();
        }
    }


    private string lastName;

    public string LastName
    {
        get { return lastName; }
        set
        {
            lastName = value;
            NotifyPropertyChanged();
        }
    }

    private string fullName;
    public string FullName
    {
        get { return Name + " " + LastName; }
    }

    private int age;

    public int Age
    {
        get { return age; }
        set
        {
            age = value;
            NotifyPropertyChanged();
        }
    }

}

'DisplayMemberPathCollection' выглядит следующим образом: [DisplayMemberPathCollection("FullName")], тогда comboBoxItem покажет полное имя.

...