UWP:绑定不适用于在DetailContentpresenter

时间:2017-07-02 15:39:58

标签: uwp

我有MasterDetailPage layout.for DetailContent我的页面中有contentpresenter,我在该contentpresenter中加载usercontrol。

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

在Master部分,我正在加载一些列表并在详细信息标题部分显示所选项目的详细信息,也基于我正在加载其他列表并在listview和gridview中显示的所选值。

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

SampleClass 
{
class1 header {get; set;}
Observablecollection<class2> listviewitems {get; set;}
Observablecollection<class3> gridviewitems {get; set;}
}

在我的代码后面我正在加载这样的数据,

SampleClass objMain = new SampleClass();
objMain.header  =  await viewmodel.Getheader();
objMain.listviewitems = await viewmodel.GroupUsersList(objMain.header.groupid);
objMain.gridviewitems  = await viewmodel.GetChatList(objMain.header.groupid);

将上述对象绑定到内容演示者

<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}绑定到内容展示者的内容时,它正在加载没有数据的usercontrol,但是我绑定到内容展示者的对象正在拥有数据。

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

1 个答案:

答案 0 :(得分:1)

我已检查过您的SampleClass。它尚未实现INotofyPropertyChanged接口。当你的&#34;标题&#34;属性的值已更改,它不会通知UI。 这就是您的代码无法正常工作的原因。

因此,请为SampleClass实施INotofyPropertyChanged界面。