2016-10-13 25 views
0

私はいくつかの項目を含むリストビューを持っています。アイテムを選択すると詳細情報を表示するようにアイテムを展開したいのですが、どうすればいいですか?UWP ListView:アイテムを選択するときにアイテムを展開する方法は?

+0

ようこそ!良い質問をするので、良い答えを得るためにあなたを助けるために私たちの[SO質問チェックリスト](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)を確認してください。 –

+0

これを行うデフォルトコントロールはありません。しかし、同様の動作のためのCustomControlsがあります。 [this](http://deanchalk.com/a-xaml-uwp-custom-control-the-expander/) – AVK

+0

@AVKNaiduをご覧ください。このようなCustomControlを提供するのはとても親切ですが、デフォルトの 'ListView'コントロールを使ってこの作業を行うことができます。詳細については私の答えを確認することができます。 –

答えて

1

私はCustomControlを慎重にチェックしていませんでした。これは@AVK Naiduによって提供されたもので、問題は解決しているようです。しかし、ここでは、デフォルトのListViewコントロールでこの作業を行うことは可能ですが、選択すると、ListViewItemDataTemplateを変更するだけです。

ただ、ここでは例えば:

<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、「しかし、違うサイズを別のアイテムに割り当てるのはプロパティではないと思う」と言っても、それは正しくないのですか?私はそれがあなたのアプリで達成する必要があるものに基づいていると思う。実装はマスター/ディテールもメソッドです。これを実装するには、公式の[マスター/ディテールサンプル](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/)を参照してください。 XamlMasterDetail)。 –

関連する問題