2017-05-30 56 views
1

不能收集属性绑定到数据网格行模板的Datagrid在DataGrid行模板

<DataTemplate x:Key="RowDetailsTemplate" DataType="{x:Type summons:IndividualDefendantSearchViewModel}"> 

      <controls:ExtendedDataGrid 
       x:Name="RowDetails" 
       CanUserSortColumns="True" 
       ContentWidth="910" 
       DataContext="{Binding ElementName=Parent, Path=DataContext.GroupedSearchResults}" 
       Focusable="False" 
       HeadersVisibility="None" 
       IsSynchronizedWithCurrentItem="False" 
       ItemsSource="{Binding Path=SelectableIndividualDefendantSearchResults}" 
       ShowRowSelection="False"> 

       <controls:ExtendedDataGrid.Columns>    
        <DataGridTextColumn 
         Width="*" 
         Binding="{Binding Name}" 
         Header="{localization:LanguageBinding ResourceKey=Name}" /> 
       </controls:ExtendedDataGrid.Columns> 
      </controls:ExtendedDataGrid> 
     </DataTemplate> 

我的数据模板

public class SelectableIndividualDefendantSearchResult : CheckedListItem<SearchResult> 
{ 

    public string Name 
     => $"{Item.FirstName} {(string.IsNullOrEmpty(Item.Insertion) ? "" : Item.Insertion + " ")}{Item.LastName}"; 


} 

public class GroupedSelectableIndividualDefendantSearchResult: EnhancedBindableBase 
{ 

    public DateTime? SearchDate { get; set; } 

    public ObservableCollection<SelectableIndividualDefendantSearchResult> 
     _selectableIndividualDefendantSearchResults; 


    public ObservableCollection<SelectableIndividualDefendantSearchResult> 
     SelectableIndividualDefendantSearchResults { 
     get { return _selectableIndividualDefendantSearchResults; } 
     set { SetProperty(ref _selectableIndividualDefendantSearchResults, value); } 
    } 

} 

我的财产:

public ObservableCollection<GroupedSelectableIndividualDefendantSearchResult> GroupedSearchResults 
    { 
     get { return _groupedSearchResults; } 
     set { SetProperty(ref _groupedSearchResults, value); } 
    } 

主要的DataGrid的ItemSource是

ItemsSource="{Binding GroupedSearchResults}" 

我可以看到SearchDate绑定到主行,但RowDataTemplate是空字符串...我做错了什么?

+0

在您的IndividualDefendantSearchViewModel中是否有一个名为'SelectableIndividualDefendantSearchResults'的属性? –

+0

不,SelectableIndividualDefendantSearchResults是GroupedSearchResults的一个属性 –

回答

0

不要绑定DataContext{Binding ElementName=Parent, Path=DataContext.GroupedSearchResults}

<DataTemplate x:Key="RowDetailsTemplate"> 
    <controls:ExtendedDataGrid 
       x:Name="RowDetails" 
       CanUserSortColumns="True" 
       ContentWidth="910" 
       Focusable="False" 
       HeadersVisibility="None" 
       IsSynchronizedWithCurrentItem="False" 
       ItemsSource="{Binding Path=SelectableIndividualDefendantSearchResults}" 
       ShowRowSelection="False"> 

     <controls:ExtendedDataGrid.Columns> 
      <DataGridTextColumn 
         Width="*" 
         Binding="{Binding Name}" 
         Header="{localization:LanguageBinding ResourceKey=Name}" /> 
     </controls:ExtendedDataGrid.Columns> 
    </controls:ExtendedDataGrid> 
</DataTemplate> 
+0

这解决了我的问题。谢谢:) –

+0

不客气。请记住upvote有用的答案:) https://stackoverflow.com/help/privileges/vote-up – mm8

0

类型您的DataTemplate的DataContext的是IndividualDefendantSearchViewModel。所以你的ItemsSource绑定指向IndividualDefendantSearchViewModel.SelectableIndividualDefendantSearchResults,对吧?

您必须绑定到SelectableIndividualDefendantSearchResults属性所在的另一个DataContext。 你可以用下面这样做:

{Binding DataContext.SelectableIndividualDefendantSearchResults, RelativeSource={RelativeSource AncestorType=UserControl}} 

的用户控件保存与目标属性DataContext的,你需要去适应它为你的目的(如果它是不同于用户控件)。

增加:

mm8是正确的。不要绑定到你的DataGrid的DataContext,没有必要。

+0

谢谢。问题只出现在{Binding ElementName = Parent,Path = DataContext.GroupedSearchResults}中: –