Передача списка в конвертер с несколькими значениями

У меня есть столбец DataGrid, подобный этому

<dxg:GridControl DockPanel.Dock = "Right" Name = "gridControl" ItemsSource = "{Binding FilterWiseListOfWorkOrder,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" >

        <dxg:GridColumn Header = "Name" >
                            <dxg:GridColumn.DisplayMemberBinding>
                                <MultiBinding Converter = "{StaticResource CellBackRoundColorOtTypeConvertor}" >
                                    <Binding Path = "RowData.Row" RelativeSource = "{RelativeSource Mode=FindAncestor, AncestorType = {x:Type UserControl}}" />
                                    <Binding Path = "Listofcolor" RelativeSource = "{RelativeSource Mode=FindAncestor, AncestorType = {x:Type UserControl}}" />
                                </MultiBinding>
                            </dxg:GridColumn.DisplayMemberBinding>
                        </dxg:GridColumn>
     </dxg:GridControl>

Здесь <Binding Path = "RowData.Row" RelativeSource = "{RelativeSource Mode=FindAncestor, AncestorType = {x:Type UserControl}}" /> Данные строки передаются конвертеру

Но <Binding Path = "Listofcolor" RelativeSource = "{RelativeSource Mode=FindAncestor, AncestorType = {x:Type UserControl}}" /> Не смог пройти Listofcolor. этого нет в источнике Datagrid. Listofcolor находится в Vm отдельным списком

Преобразователь

public class CellBackRoundColorOtTypeConvertor : MarkupExtension, IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {if (values[0] == DependencyProperty.UnsetValue || values[1] == DependencyProperty.UnsetValue)
             // Here values[1] == DependencyProperty.UnsetValue is true
            //Some Conversions
        }
    }

ВМ

 public List<Ots> FilterWiseListOfWorkOrder
            {
                get { return filterWiseListOfWorkOrder; }
                set
                {
                    filterWiseListOfWorkOrder = value;
                    OnPropertyChanged(new PropertyChangedEventArgs("FilterWiseListOfWorkOrder"));
                }
            }


// This will fill in Ctor of Vm 
     public List<string> Listofcolor
            {
                get { return listofcolor; }
                set { listofcolor = value; }
            }

В: Как передать этот Listofcolor конвертеру?

Пробовал DataContext.Listofcolor и пробовал использовать ElementName тоже

Обновление в комментарии

Передача списка в конвертер с несколькими значениями

Вам понадобится Datacontext с привязкой относительно источника, потому что в противном случае он ищет свойство элемента управления. Я удивлен, что ваша первая привязка работает. Возможно, Rowdata - это dp для вашего пользовательского контроля. Я могу только догадываться, потому что вы не дали нам достаточно кода. Не заставляйте нас гадать.

Andy 03.05.2019 10:21

@Энди, я пытался использовать DataContext.Listofcolor

Avinash Reddy 03.05.2019 10:23

@Andy Проверить сейчас Разместил все необходимые вещи

Avinash Reddy 03.05.2019 10:38

Listofcolor не является свойством зависимости. Поставьте точку останова в вашем преобразователе и посмотрите, что вы на самом деле получаете в значениях [1], когда используете DataContext.Listofcolor в качестве пути. Возможно, вы получаете правильные вещи, но ваш код не обрабатывает их должным образом.

Andy 03.05.2019 10:47

@Andy Andy Бесполезно, я добавил ss

Avinash Reddy 03.05.2019 10:53

Является ли RowData свойством внутри FilterWiseListOfWorkOrder?

Justin CI 03.05.2019 11:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
136
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Получите доступ к Listofcolor через DataContext, если ваша виртуальная машина является контекстом данных этого пользовательского элемента управления.

 <Binding Path = "DataContext.Listofcolor" RelativeSource = "{RelativeSource Mode=FindAncestor, AncestorType = {x:Type UserControl}}" />
tried it DataContext.Listofcolor and tried using ElementName too в вопросе я упомянул, что
Avinash Reddy 03.05.2019 10:21

каков ваш основной элемент управления, для которого установлен Viewmodel, это окно или пользовательский элемент управления?

TRS 03.05.2019 10:24
usercontrol Это само собой
Avinash Reddy 03.05.2019 10:24

Пожалуйста, проверьте это сейчас

Avinash Reddy 03.05.2019 10:38
Ответ принят как подходящий

<Binding Path = "View.DataContext.Listofcolor"/> Вот чего мне не хватает связь

Другие вопросы по теме