9

StackPanelを次の行に自動的に分割する際に問題が発生しました。サンプルコードは次のとおりです。

<StackPanel Orientation="Horizontal" Width="180">
   <TextBlock.../>
   <TextBlock.../>
   <TextBlock.../>
   <Image.../>
    ...
</StackPanel>

ここで、次のようなことを実現したいと思います。StackPanelに別の要素のための十分なスペースがない場合は、新しい行に配置する必要があります。どうすればこれを達成できますか(stackpanelを使用する必要はありません)?

PS:私の目標は、テキストと画像を1行に配置することです(別の要素のための十分なスペースがない場合は、もちろん壊れることがあります)。たぶん、テキストブロックや画像を使用するよりも優れたソリューションを提供できますか?

4

4 に答える 4

16

WrapGridを試してみてください。必要な処理が実行されます:http: //msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.wrapgrid.aspx

唯一の落とし穴(これは悪いことではありません)は、WrapGridがItemsControl内のアイテムしか表示できないことです。したがって、次のように使用します(ListViewを任意のItemsControlに変更します)。

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapGrid Orientation="Horizontal" />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>
于 2012-07-19T16:31:03.773 に答える
2

StackPanelの代わりにVariabeSizedWrapGridを使用します。http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.variablesizedwrapgrid.aspxを参照してください。

複数のTextBlockの場合、複数の実行で単一のtextBlockを使用することを検討してください。もちろん、画像を実行に含めることはできませんが、2つの実行を含む1つのTextBlockは、2つの連続するTextBlockよりも優れています。

更新:これは実際には、必要なレイアウトを取得するのにまったく役立たない場合があります。RichTextBlockコントロールを確認する必要がある場合があります。http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.richtextblock.aspxを参照してください。

于 2012-07-19T15:47:45.423 に答える
2

箱から出して、WinRTで使用できるWrapPanelはありません。少なくとも今のところは...しかし、その間に回避策があります...私はそれをテストしました、そしてそれは動作します。

次のリンクで次のリンクを確認できます。

http://www.codeproject.com/Articles/24141/WrapPanel-for-Silverlight-2-0

WrapPanelはPanelクラスを継承しているため、WrapPanelを作成するか、上記のSLV2アプリにあるWrapPanel.csコードを使用することができます。

次に、同様のコードを含めるだけです

xmlns:wrapPanel = "using:yourWinRTApp"
...。

<wrapPanel:WrapPanel Orientation = "Horizo​​ntal" Width = "400">
....
</ wrapPanel:WrapPanel>

それはトリックを行う必要があります...

から取られた情報:

http://www.michielpost.nl/PostDetail_75.aspx

于 2012-08-30T19:09:54.603 に答える
0

GridViewを使用する場合があります。これは、WrapPanelと同様のレイアウト動作をします。

于 2012-07-19T14:34:02.097 に答える