[英]Datagrid in Datagrid Row Template
Can't bind collection property to data grid 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>
My Data Template 我的数据模板
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); }
}
}
My property: 我的财产:
public ObservableCollection<GroupedSelectableIndividualDefendantSearchResult> GroupedSearchResults
{
get { return _groupedSearchResults; }
set { SetProperty(ref _groupedSearchResults, value); }
}
Main DataGrid ItemSource is 主DataGrid ItemSource是
ItemsSource="{Binding GroupedSearchResults}"
I can see SearchDate bound to main rows, but RowDataTemplate is empty string... What i am doing wrong? 我可以看到SearchDate绑定到主行,但RowDataTemplate是空字符串...我做错了什么?
Don't bind the DataContext
to {Binding ElementName=Parent, Path=DataContext.GroupedSearchResults}
: 不要将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>
The type of the DataContext of your DataTemplate is IndividualDefendantSearchViewModel
. DataTemplate的DataContext类型是IndividualDefendantSearchViewModel
。 So your ItemsSource binding points to IndividualDefendantSearchViewModel.SelectableIndividualDefendantSearchResults
, right? 所以你的ItemsSource绑定指向IndividualDefendantSearchViewModel.SelectableIndividualDefendantSearchResults
,对吗?
You have to bind to another DataContext where the SelectableIndividualDefendantSearchResults
property is located. 您必须绑定到SelectableIndividualDefendantSearchResults
属性所在的另一个DataContext。 You can do this with the following: 您可以使用以下内容执行此操作:
{Binding DataContext.SelectableIndividualDefendantSearchResults, RelativeSource={RelativeSource AncestorType=UserControl}}
The UserControl holds the DataContext with the target property and you need to adapt it for your purpose (if it's different from UserControl). UserControl保存带有target属性的DataContext,您需要根据自己的需要调整它(如果它与UserControl不同)。
Addition: 加成:
mm8 is right. mm8是对的。 do not bind to the DataContext of your DataGrid, there is no need. 不要绑定到DataGrid的DataContext,没有必要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.