Чтение MultiValueConverter из ObservablleCollection

Я работаю над проектом wpf mvvm. В пользовательском контроле у ​​меня есть datagridControl от Devexpress, который связан с данными из наблюдаемой коллекции.

     <xcdg:DataGridControl x:Name="DataGridName"   HorizontalAlignment="left" VerticalAlignment="Stretch"
                                AutoCreateColumns="False"  
                                ItemsSource="{Binding ViewModel.Items}" 
                                ItemScrollingBehavior="Immediate"  SynchronizeCurrent="True" TabIndex="69" >

    <xcdg:DataGridControl.Columns >
        <xcdg:Column FieldName="Name" AllowSort="False"  Title="Name"   ShowInColumnChooser="False" />
    </xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>

Класс в коллекции Observable Содержит Имя (строка) и IsVerified (Логическое значение).

 private ObservableCollection<myData> _items = new ObservableCollection<myData>();

  public ObservableCollection<myData> Items
    {
        get { return _items; }
        set { _items = value; }
    }

     public class myData
     {
        public string Name { get; set; }

        public bool IsVerfied { get; set; }
     }

У меня также есть текстовый блок, который я использую для отображения сообщения об ошибке над dataGrid, когда значение IsVerfied имеет значение false.

 <TextBlock Name="textBlockErrrMessage" Foreground="IndianRed">
                            <TextBlock.Text>
                                <MultiBinding Converter="{StaticResource MultiValueConverter}">
                                    <Binding Path="DataContext.IsVerified" RelativeSource="{RelativeSource AncestorType=xcdg:DataRow}" ElementName="DataGridName" />
                                </MultiBinding>
                            </TextBlock.Text>
                        </TextBlock>

Для этого я планирую иметь многозначный преобразователь (я также делаю то же самое, но для другого элемента управления, поэтому я выбираю MultiValueConverter), который я хотел бы отправить значение IsVerfied из коллекции и вернуть сообщение. Моя проблема заключается в том, как установить Binding в MultiBinding для чтения значения IsVerfied из Observable collection. Я считаю, что именно эта строка является проблемой при поиске значения Collection

<Binding 
    Path="DataContext.IsVerified" 
    RelativeSource="{RelativeSource AncestorType=xcdg:DataRow}" 
    ElementName="DataGridName" />

1 ответ

В вашем Binding вы хотите использовать RelativeSource или ElementName, но не оба. Смотрите этот пост для хорошего разъяснения различий между ними.

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