我正在开发一个wpf mvvm项目。在用户控件中,我有一个来自Devexpress的datagridControl,它绑定到Observable集合中的数据。
<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集合中的类包含Name(字符串)和IsVerified(Boolean)。
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; }
}
当IsVerfied的值为false时,我还有一个用于在dataGrid上方显示错误消息的文本块。
<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)我想从Collection发送IsVerfied值并返回消息。我的问题是如何在MultiBinding中设置Binding以从Observablecollection中读取IsVerfied值。这个特定的行是我认为定位Collection值
的问题<Binding
Path="DataContext.IsVerified"
RelativeSource="{RelativeSource AncestorType=xcdg:DataRow}"
ElementName="DataGridName" />
答案 0 :(得分:1)
在Binding中,您希望使用RelativeSource或ElementName,但不能同时使用两者。 See this post对两者之间的差异做了很好的澄清。