2016-08-24 40 views
1

我正在處理一個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

回答

1

在你綁定,你要爲使用的RelativeSource或的ElementName的問題,但不能同時使用。 See this post對兩者之間的區別做了很好的說明。