私のプログラムでは、私はビューボックス内にWrapPanelを持っています。 WrapPanel(実際にはItemsControlのItemsPanelTemplate)には、すべて異なるサイズのバインドされたアイテムが含まれています。WPF WrapPanel ViewBoxの最大サイズ
<Viewbox Name="ViewWindow" Margin="10">
<Grid>
<ItemsControl ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" MaxHeight="600"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
このすべての目標は、すべてのアイテムが1つの画面に収まるようにすることです。 Viewboxは内容がすべて収まるようにズームすることでこれを処理します。 WrapPanelの各項目は、ユーザが定義したテキストなので、すべて異なるサイズにすることができます。私がWrapPanelで達成しようとしているのは、画面上のテキストができるだけ大きくなることです。私はWrapPanel MaxHeightを設定して、これを行っています。これは、背が高すぎる場合、項目がより多くの列にラップされるようにしていますが、これを行うにはちょっとした方法であり、Itemsの異なるグループについては、MaxHeightが異なる。
私がこれを意味する例として、ItemsControlがバインドされているアイテムがアルファベットのすべての文字を表示しているとします。アイテムを複数の列に折り返すように強制することなく、実際に小さなテキストで1つの本当に背の高い列に終わるでしょうが、WrapPanelのMaxHeightを設定すると、アイテムをこのように複数の列に強制することができます。画面上で大きくなる:
A F K P U Z
B G L Q V
C H M R W
D I N S X
E J O T Y
私はこれについて間違っているのですか? WrapPanelよりも優れたコントロールがありますか?私が望むものを得るためにカスタムパネルを作成する必要がありますか?あなたは
編集提供できる任意の助け
ありがとう:UniformGridが動作しない理由の例えば
は、(異なるアイテムを表す各文字で)私は、これらの5つの項目を持っていたと仮定します
A C E
A C E
A D E
B D E
UniformGridを使用すると、すべてのアイテムがアイテムEのサイズになり、画面上でさらに多くのスペースを占めることになります。
ItemsPanelとしてUniformGridを使用することはどうですか?あなたがアイテムを追加すると、行と列が追加されます。 –
これは簡単な方法ではできません。折り返しパネルがビューボックス内にある場合、折り返す必要はありません。これは、ビューボックスが収まるように収縮させるためです。 – Phil