DisplayMember ComboBox для которого содержит список <Object>в качестве источника элемента - PullRequest
0 голосов
/ 29 мая 2019

Мне нравится Comobox

 <dxe:ComboBoxEdit AutoComplete="True" IsTextEditable="False" ImmediatePopup="True" IncrementalFiltering="True" ItemsSource="{Binding Example}" />

В Vm

 public List<object> Example
            {
                get { return example; }
                set { example = value; OnPropertyChanged(new PropertyChangedEventArgs("Example")); }
            }
   public List<ArticlesStock> ArticlesStockList
        {
            get { return articlesStockList; }
            set
            {
                articlesStockList = value;
                OnPropertyChanged(new PropertyChangedEventArgs("ArticlesStockList"));
            }
        }

  Example.Add(ArticlesStockList);

В ArticlesStock классе, у меня есть Prop Name Producer строка

Какя могу установить это как мой путь в ComboBox?обычно мы можем просто установить это с помощью реквизита.но здесь у меня есть список. и внутри у меня есть еще один список.в этом списке должно быть установлено значение первого элемента.Преобразование C #, как я могу установить это как Показать элемент

((List<ArticlesStock>)Example[0])[0].WarehouseDeliveryNoteItem.Producer;

1 Ответ

2 голосов
/ 29 мая 2019

Я бы сделал следующее: определил DataTemplate для элементов вашего комбобокса и использовал конвертер для получения нужного вам свойства.

Определение DataTemplate:

<ComboBox ItemsSource="{Binding Example}">
    <ComboBox.ItemTemplate>
        <DataTemplate DataType="{x:Type List}">
            <!--no Path is specified, which is equivalent to Path="."-->
            <TextBlock Text="{Binding Converter={StaticResource MyConv}}"></TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

И конвертериспользуется для доступа к свойству Producer:

public class MyConv : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // here value will be an item of Example list, so a List<ArticlesStock>
        var val = value as List<ArticlesStock>;
        return val[0].Producer;
    }
}

Обратите внимание, что я упростил структуру вашей модели для краткости.

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