【问题标题】:Datagrid in Datagrid Row TemplateDatagrid 行模板中的 Datagrid
【发布时间】:2017-10-30 21:53:14
【问题描述】:

无法将集合属性绑定到数据网格行模板

<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 是空字符串...我做错了什么?

【问题讨论】:

  • IndividualDefendantSearchViewModel 中是否有名为“SelectableIndividualDefendantSearchResults”的属性?
  • 不,SelectableIndividualDefendantSearchResults 是 GroupedSearchResults 的属性

标签: c# wpf datagrid rowdetailstemplate


【解决方案1】:

不要将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>

【讨论】:

【解决方案2】:

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

您必须绑定到 SelectableIndividualDefendantSearchResults 属性所在的另一个 DataContext。 您可以通过以下方式做到这一点:

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

UserControl 包含具有目标属性的 DataContext,您需要根据您的目的对其进行调整(如果它与 UserControl 不同)。

加法:

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

【讨论】:

  • 谢谢。问题仅出在 {Binding ElementName=Parent, Path=DataContext.GroupedSearchResults}:
猜你喜欢
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多