Передача списка в конвертер значений - PullRequest
0 голосов
/ 03 мая 2019

У меня есть столбец 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
        }
    }

VM

 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; }
            }

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

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

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

SS

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

<Binding Path="View.DataContext.Listofcolor"/> Это то, что мне не хватает ссылка

0 голосов
/ 03 мая 2019

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

 <Binding Path="DataContext.Listofcolor" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...