Как отправить в combobox 1 свойство с объекта - PullRequest
0 голосов
/ 06 июня 2019

Я пишу этот комбинированный список

<ComboBox 
    x:Name="ComboBoxRole" 
    SelectedItem="{Binding ApplicationModel.CategoryName}"  
    ItemsSource="{Binding Categories}"  
    Style="{StaticResource ComboBoxStyle}" Text="Choose"
    />

для этой модели

public class CategotyModel : INotifyPropertyChanged, IDataErrorInfo
{
    private string id;
    private string name;

    public string Id
    {
        get => id;
        private set
        {
            id = value;
            NotifyPropertyChanged("Id");
        }
    }
    public string Name
    {
        get => name;
        private set
        {
            name = value;
            NotifyPropertyChanged("Name");
        }
    }
 }

для Item item создайте это свойство

public IList<CategotyModel> Categories
    {
        get
        {
            var categoriesDTO = _categoryManager.GetAllCategories();
            this.categories = mapper.DefaultContext.Mapper.Map<IList<CategotyModel>>(categoriesDTO);
            return categories;
        }
    }

это работает весело, но я не знаю, как посылать в комбо только 1 параметр, потому что я беру "AppStore.WPF.MVVMLight.Models.CategotyModel" объект.

Примечание: я беру результат с сервера. это неважно.

(без foreach IList<CategoryModel> и писать в список строк - я думаю, что это плохой способ).

Редактировать

<ComboBox 
    x:Name="ComboBoxRole" 
    SelectedItem="{Binding ApplicationModel.CategoryName}" 
    SelectedValuePath="Name" 
    DisplayMemberPath="Name" 
    ItemsSource="{Binding Categories}"  
    Style="{StaticResource ComboBoxStyle}" 
    Text="Choose"
    />

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Вам нужно исправить несколько вещей в вашем ComboBox: Чтобы отобразить свойства Name элементов, добавьте DisplayMemberPath="Name".Чтобы выбрать только свойство имени выбранного элемента вместо всего объекта, добавьте SelectedValuePath="Name" и привяжите ApplicationModel.CategoryName к SelectedValue вместо SelectedItem.SelectedItem по-прежнему будет целым объектом, даже когда SelectedValuePath используется.

<ComboBox 
    x:Name="ComboBoxRole" 
    SelectedValue="{Binding ApplicationModel.CategoryName}" 
    SelectedValuePath="Name" 
    DisplayMemberPath="Name" 
    ItemsSource="{Binding Categories}"  
    Style="{StaticResource ComboBoxStyle}" 
    Text="Choose"
    />
0 голосов
/ 06 июня 2019

Вы хотите DisplayMemberPath = "Имя"

    <ComboBox 
        x:Name="ComboBoxRole" 
        DisplayMemberPath="Name" 
        SelectedItem="{Binding ApplicationModel.CategoryName}" 
        ItemsSource="{Binding Categories}"  
        Style="{StaticResource ComboBoxStyle}" 
        Text="Choose"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...