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