UWP:绑定不适用于在DetailContentpresenter中具有UserControl的主详细布局

UWP:绑定不适用于在DetailContentpresenter中具有UserControl的主详细布局,uwp,Uwp,我有MasterDetailPage布局。对于DetailContent,我的页面中有contentpresenter,我正在该contentpresenter中加载usercontrol Usercontrol有一些标题字段、命令栏、ListView和GridView 在主控部分,我加载一些列表并在详细信息标题部分显示所选项目的详细信息,同时根据所选值,我加载其他列表并在listview和gridview中显示 我已将该对象绑定到contentpresenter的content属性。对象类如下

我有MasterDetailPage布局。对于DetailContent,我的页面中有contentpresenter,我正在该contentpresenter中加载usercontrol

Usercontrol有一些标题字段、命令栏、ListView和GridView

在主控部分,我加载一些列表并在详细信息标题部分显示所选项目的详细信息,同时根据所选值,我加载其他列表并在listview和gridview中显示

我已将该对象绑定到contentpresenter的content属性。对象类如下所示

SampleClass 
{
class1 header {get; set;}
Observablecollection<class2> listviewitems {get; set;}
Observablecollection<class3> gridviewitems {get; set;}
}
将上述对象绑定到content presenter

<ContentPresenter x:Name="DetailContentPresenter" Grid.Column="1" Grid.RowSpan="2" Content="{x:Bind objMain ,Mode=OneWay}">

我在UserControl中绑定这些数据,如下所示,我在UserControl中有stackpanel,我在其中绑定头数据

<StackPanel>
<TextBlock Name="txtGroupName" Text="{Binding header.name}"/>
<TextBlock Name="txtGroupType" Text="{Binding header.ptype}" />
<TextBlock Name="txtGroupDate" Style="{ThemeResource smallText}">
<Run>Created on:</Run>
<Run Text="{Binding header.startdate}"></Run>
</TextBlock>
</StackPanel>

创建日期:
我有一个gridview和listview,在其中绑定listviewitems和gridviewitems,如下所示

<GridView  x:Name="GroupMemberGridView"
                    ItemsSource="{Binding listviewitems}"
                           ItemTemplate="{StaticResource groupMemberGridViewTemplate}"
                           Grid.Row="3"
                           ItemClick="GridView_ItemClick"
                           IsItemClickEnabled="True"
                           Margin="5 0 0 0">
<ListView x:Name="GroupMemberListView" 
                    ItemTemplate="{StaticResource groupMemberListViewTemplate}"
                        ItemsSource="{Binding gridviewitems}"
                        ShowsScrollingPlaceholders="True"
                        Grid.Row="3"                                                  
                        ItemClick="ListView_ItemClick"
                        IsItemClickEnabled="True">

现在的问题是,当我使用{x:bind objMain}绑定到content presenter的内容时,它正在加载没有数据的usercontrol,但是绑定到content presenter的对象有数据


我发现的另一个观察结果是,当我对contentpresenter的内容属性使用{Binding objMain}时,它最初正在加载数据,但当我单击主列表项时,它并没有更新数据。但是,当单击主列表项时,我将更改的值分配给ContentPresenter的Content属性。但是当我导航到其他页面并返回后重新加载同一页面时,它将显示更改的数据

我已检查了您的
SampleClass
。它没有实现
INotofyPropertyChanged
接口。当“header”属性的值更改时,它不会通知UI。 这就是你的代码不起作用的原因


因此,请为您的
SampleClass

实现接口,而不是像这样更改原始的
List
引用
objMain.listviewitems=wait viewmodel.GroupUsersList(objMain.header.groupid),尝试将项目添加到此列表。好的,我将尝试此操作。但问题也在于标题项,我将objmain.header显示为header.name等等。它也没有加载数据。那么你能解释一下吗。提醒您一件事,这些都是usercontrol listview和标题项的一部分。我正在contentpresenter中加载这些项。有人能帮我吗?。我现在可以加载数据,但当我单击主列表项时,数据不会被刷新。仅当您显示单击处理程序代码时。专用异步void OnItemClick(对象发送方,ItemClickEventArgs e){SelectedGroup=e.ClickedItem as class1;_objMain.header=SelectedGroup;userlist=wait ViewModel.GroupUsersList(SelectedGroup.groupid);_objMain.userslist=userlist;objMain=_objMain;DetailContentPresenter.Content=objMain;}
<GridView  x:Name="GroupMemberGridView"
                    ItemsSource="{Binding listviewitems}"
                           ItemTemplate="{StaticResource groupMemberGridViewTemplate}"
                           Grid.Row="3"
                           ItemClick="GridView_ItemClick"
                           IsItemClickEnabled="True"
                           Margin="5 0 0 0">
<ListView x:Name="GroupMemberListView" 
                    ItemTemplate="{StaticResource groupMemberListViewTemplate}"
                        ItemsSource="{Binding gridviewitems}"
                        ShowsScrollingPlaceholders="True"
                        Grid.Row="3"                                                  
                        ItemClick="ListView_ItemClick"
                        IsItemClickEnabled="True">