1

UWP アプリでは、画面の利用可能なすべての水平方向のスペースを使用する XAML グリッド スタイル コントロールの動的レイアウトが必要です。たとえば、電話のような小さな画面を使用している場合、リストをこのように画面を下にスクロールするだけです。

小画面レイアウトのイメージ

ただし、より広い画面を使用している場合は、次のスクリーン ショットのようにレイアウトを調整したいと考えています。

ワイドスクリーンレイアウト

これを達成するために使用できる Visual Studio 2015 UWP コントロールに関する提案はありますか?? おそらく VariableSizedWrapGrid と Grid コントロールの組み合わせを考えていますが、それを理解できないようです。任意の提案をいただければ幸いです。

編集:すべてのアイテムが同じサイズになるわけではありません。一部のデバイス名は長くなり、2 行に折り返されます。さまざまなアイテム サイズを処理するコントロールが必要で、画面サイズに基づいて 1 列、2 列、3 列などのレイアウトが必要です。

4

1 に答える 1

0

表示されているスクリーンショットから、すべてのアイテムが同じサイズであるため、VariableSizedWrapGrid. コントロールを使用するだけで、GriView説明したようにアイテムが自動的にラップされます。

  • 小さな画面では、すべての項目が縦に積み上げられています
  • 幅の広い画面では、アイテムは水平方向に流れ、使用可能な幅と単一のアイテムの幅に従って次の行に折り返されます。

1 2 3

4 5 6

7

<GridView ItemsSource="{Binding YourItems}"
          ItemTemplate="{StaticResource YourItemTemplate}">

単一のアイテムのレイアウトは YourItemTemplate で指定され、DataTemplateすべて設定されています。


更新:質問が可変サイズの項目に変更されたため、より複雑になりました。

  • ListView は、アイテムのさまざまな高さの自動スケーリングを提供します。ただし、1 つの列に限定されます。
  • VariableSizedWrapGrid には、使用される # 行/列の「割り当て」が必要です。最大限の柔軟性を得るために、セルの高さを 1 ピクセルにし (パフォーマンス ヒットに注意してください!!)、必要な高さを割り当てることができます。したがって、いくつかの計算を追加する必要があり、テキストがレンダリングされるのに何行かかるかは 100% わかりません (ただし、文字数に基づいて適切に推測することはできます)。

以前、完全に柔軟なレイアウトのために 2 番目のアプローチを使用したことがありますが、必ずしも 100% 完璧ではありませんでした (ほとんどのフォントでは、M は I よりも多くのスペースを必要とするため)。サイズを計算するときにそれも考慮したくない場合を除きます。

テキスト ボックスを表示画面の外にレンダリングする (座標 -500/-500 など) など、他にもたくさんのハックがあります。レンダリングされたサイズを確認し、それを VariableSizedWrapGrid に使用します。

の結論は次のとおりです。

  • 簡単な計算 (例: > 80 文字 = 2 行) を使用して、小さいタイルが必要か大きいタイルが必要かを判断します。
  • デバイス名にはデフォルトで 2 行を指定します。短い場合は 1 行のみを使用し、残りのコンテンツは下揃えになります。
  • デバイス名に 1 行を入力し、テキストが長い場合はトリミングします。詳細ページでは氏名を使用できます。

2 または 3 のいずれかを選択します。これは、実装が簡単であり、同じサイズのタイルの方が可変サイズのタイルよりも概観 (整列されたテキスト) が優れているためです。

于 2015-11-17T21:01:22.470 に答える