Как отобразить имя из подобъекта в выпадающем списке? - PullRequest
0 голосов
/ 17 января 2019

У меня есть сложный объект Article со списком Locations типа ArticleLocation. Мне нужно отобразить эти местоположения в выпадающем списке внутри GridView:

public class Article : INotifyPropertyChanged
{
    private int sapNumber;
    private string descript;
    private ObservableCollection<ArticleLocation> locations;
    private ArticleLocation selectedLocation;


    public int SAPNumber
    {
        get => sapNumber;
        set
        {
            if (sapNumber != value)
            {
                sapNumber = value;
                RaisePropertyChanged("SAPNumber");
            }
        }
    }

    public string Description
    {
        get => descript;
        set
        {
            if (descript == null || !descript.Equals(value))
            {
                descript = value;
                RaisePropertyChanged("Description");
            }
        }
    }

    internal ObservableCollection<ArticleLocation> Locations { get => locations; set => locations = value; }
    internal ArticleLocation SelectedLocation { get => selectedLocation; set => selectedLocation = value; }

}

Мне нужно отобразить местоположение, хранящееся так:

class ArticleLocation : INotifyPropertyChanged
{
    private string location;
    private double available;

    public string Location { get => location; set => location = value; }
    public double Available { get => available; set => available = value; }

    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}

Ящик со списком, как он у меня сейчас:

<telerik:RadComboBox ItemsSource="{Binding Locations}" DisplayMemberPath="Location" SelectedItem="{Binding SelectedLocation}" SelectionChanged="RadComboBox_SelectionChanged"/>

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

Не то чтобы это имело большое значение, но я использую объекты telerik в форме wpf.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я обнаружил проблему, свойства Locations и SelectedLocation были созданы как внутренние из-за того, что класс ArticleLocation не был общедоступным, и поэтому не мог быть доступен для представления XAML.

Изменение класса ArticleLocation на public и свойств в моем классе Article на public, которые они начали показывать в поле со списком.

0 голосов
/ 18 января 2019

Класс товара:

public class Article : INotifyPropertyChanged
{
    public ObservableCollection<ArticleLocation> locations;
    public string Location { 
        get => location; 
        set
        {
            if (location == null || !location.Equals(value))
            {
                 location = value;
                 RaisePropertyChanged("Location");
            }
        }
    }
}

Статья Класс местоположения:

public class ArticleLocation : INotifyPropertyChanged
{
    private string location;

    public string Location { 
        get => location; 
        set
        {
            if (location == null || !location.Equals(value))
            {
                location = value;
                RaisePropertyChanged("Location");
            }
        }
    }
}

в вашем классе xaml.cs:

public MainWindow()
{
    InitializeComponent();
    Article article = new Article();
    this.DataContext = article;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...