2016-10-13 23 views
0

我有一個listview包含一些項目。當我選擇一個項目時,我想擴展該項目以顯示詳細信息,我應該怎麼做?UWP ListView:選擇它時如何擴展項目?

+0

歡迎堆棧溢出!請查看我們的[SO問題清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)來幫助你提出一個好問題,從而得到一個很好的答案。 –

+0

沒有默認控件這樣做。但是有類似行爲的CustomControls。看看[這](http://deanchalk.com/a-xaml-uwp-custom-control-the-expander/) – AVK

+0

@AVKNaidu,這是非常謝謝你提供這樣的CustomControl,但我想與默認的'ListView'控件說,這項工作可以完成,你可以檢查我的答案的細節。 –

回答

1

我沒有仔細檢查了CustomControl它通過@AVK杜女士,這是很好的,似乎能夠解決您的問題提供。但是,我要在這裏說,這是完全可能做到這一點的工作與默認ListView控制,你需要的就是改變DataTemplateListViewItem被選中時,它是什麼。

就比如這裏:

<Page.Resources> 
    <DataTemplate x:Name="Normal" x:Key="Normal"> 
     <TextBlock Text="{Binding Name}" /> 
    </DataTemplate> 
    <DataTemplate x:Name="Detail" x:Key="Detail"> 
     <StackPanel> 
      <TextBlock Text="{Binding Name}" FontSize="30" Foreground="Red" HorizontalAlignment="Center" /> 
      <TextBlock Text="Details:" FontSize="30" Foreground="Blue" Margin="0,10" /> 
      <TextBlock Text="{Binding Details}" FontSize="20" /> 
     </StackPanel> 
    </DataTemplate> 
</Page.Resources> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <ListView ItemTemplate="{StaticResource Normal}" 
       ItemsSource="{x:Bind Collection}" SelectionChanged="listView_SelectionChanged" /> 
</Grid> 

代碼背後listView_SelectionChanged

private void listView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    //Assign DataTemplate for selected items 
    foreach (var item in e.AddedItems) 
    { 
     ListViewItem lvi = (sender as ListView).ContainerFromItem(item) as ListViewItem; 
     lvi.ContentTemplate = (DataTemplate)this.Resources["Detail"]; 
    } 
    //Remove DataTemplate for unselected items 
    foreach (var item in e.RemovedItems) 
    { 
     ListViewItem lvi = (sender as ListView).ContainerFromItem(item) as ListViewItem; 
     lvi.ContentTemplate = (DataTemplate)this.Resources["Normal"]; 
    } 
} 

結果:

enter image description here

+0

哇!這絕對是我想要的!謝謝^ _^ – THaGKI9

+0

但是我覺得把不同的大小分配給不同的項目是不屬性的,因爲這會影響用戶體驗。最後我爲我的應用程序添加一個詳細頁面。 – THaGKI9

+0

@ THaGKI9,'但我覺得這不是物業分配不同的大小不同的物品',你的意思是不正確?我認爲它基於你的應用需要實現的功能。並且實現一個主/細節也是一個方法,爲了實現這個,你可以參考官方的[Master/detail sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/) XamlMasterDetail)。 –