2017-05-30 106 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}中: –