[英]Datagrid in Datagrid Row Template
無法將集合屬性綁定到數據網格行模板
<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是空字符串...我做錯了什么?
不要將DataContext
{Binding ElementName=Parent, Path=DataContext.GroupedSearchResults}
到{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>
DataTemplate的DataContext類型是IndividualDefendantSearchViewModel
。 所以你的ItemsSource綁定指向IndividualDefendantSearchViewModel.SelectableIndividualDefendantSearchResults
,對嗎?
您必須綁定到SelectableIndividualDefendantSearchResults
屬性所在的另一個DataContext。 您可以使用以下內容執行此操作:
{Binding DataContext.SelectableIndividualDefendantSearchResults, RelativeSource={RelativeSource AncestorType=UserControl}}
UserControl保存帶有target屬性的DataContext,您需要根據自己的需要調整它(如果它與UserControl不同)。
加成:
mm8是對的。 不要綁定到DataGrid的DataContext,沒有必要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.