MultiValueConverter从ObservablleCollection读取

MultiValueConverter从ObservablleCollection读取

问题描述:

我正在处理一个wpf mvvm项目。在用户控件中,我有一个来自Devexpress的datagridControl,它绑定到来自Observable集合的数据。MultiValueConverter从ObservablleCollection读取

 <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一个文本块。

<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(我也是做同样的事情,但对于不同的控制,这就是为什么我选择MultiValueConverter),我想从收藏送IsVerfied值并返回消息。我的问题是如何设置MultiBinding中的绑定从Observablecollection中读取IsVerfied值。这种特殊的线是什么,我相信是在定位收藏价值

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

你还没有告诉这个文本块放在哪里,相对于数据网格。 – Aybe

+0

获取绑定的Textblock在不同的usercontrol – ZoHen

+0

您绑定到'DataContext.IsVerified',但您确定数据上下文是'myData'的一个实例吗?另外检查VS中的输出窗口以发现绑定错误。 – Aybe

在你绑定,你要为使用的RelativeSource或的ElementName的问题,但不能同时使用。 See this post对两者之间的区别做了很好的说明。