Чтение 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, но не оба. Смотрите этот пост для хорошего разъяснения различий между ними.