2017-07-02 21 views
0

我有MasterDetailPage layout.for DetailContent我在我的頁面中有contentpresenter,我正在加載該contentpresenter中的usercontrol。UWP:綁定對於具有UserControl的主詳細布局不起作用DetailContentpresenter

Usercontrol有一些頭字段,命令欄和ListView和GridView。

在主節中我加載了一些列表,並在詳細信息標題部分顯示了選定項的詳細信息,同樣基於所選擇的值我加載了其他列表並顯示在listview和gridview中。

我已將該對象綁定到contentpresenter的內容屬性。對象類看起來像下面

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:綁定objMain}被綁定到它加載用戶控件沒有數據的內容展示的內容,但是這是我必然的內容演示的對象是具有數據。

我發現的另一個觀察結果是,當我爲ContentPresenter的Content屬性使用{Binding objMain}時,它最初正在加載數據,但是當我點擊MasterList Item時,它並未更新數據。不過,當我單擊主列表項目時,我將更改的值分配給ContentPresenter的Content屬性。但是當我導航到某個其他頁面並重新啓動後,同一頁面重新加載時,它將顯示已更改的數據

+0

而不是更改原來的'List'引用likw這個'objMain.listviewitems =等待viewmodel.GroupUsersList(objMain.header.groupid);',嘗試添加項目到這個列表。 –

+0

好吧,我會試試這個。但是問題也出現在我將objmain.header顯示爲header.name等的標題項目中。它也沒有加載數據。所以你也可以解釋一下。 並提醒你一件事,這一切都是用戶控件的一部分,我在listpresenter中加載了listview和header items.which。 –

+0

任何人都可以請幫助我嗎?我現在可以加載數據,但是當我點擊主列表項時,它不會被刷新。僅當您顯示您的點擊處理程序代碼時纔會顯示 –

回答

1

我已檢查您的SampleClass。它沒有實現INotofyPropertyChanged接口。當你的「header」屬性的值改變時,它不會通知UI。 這就是爲什麼你的代碼無法正常工作的原因。

因此,請爲您的SampleClass實施INotofyPropertyChanged界面。

相關問題