2017-08-22 19 views
0

ビューモデルからバインドされたアイテムの数が可変で、水平に表示して選択する必要があります。 各項目はテキストで表され、これらのテキストの長さは異なります。 ItemTemplateとして横向きのStackPanelを使用してリストビューを使用すると、アイテムはその内部のテキストと同じ幅になります。 最大サイズのものをすべて同じサイズにする方法はありますか?理想的には、複雑なコードビハインドなしで、アイテムテンプレートなどを使用しますか? 注:私は、テキストは最終的に(異なる言語など)を持つことができますどのような長さを知らないので、私は、いくつかの任意の最小幅を設定することはできませんWPF:均一な幅のアイテムで水平に整列されたコレクション

+0

あなたは各項目に 'WIDTH = "1 *"' のような何かを行うことができ、各要素

<ListBox> <ListBox.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Rows="1"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> <ListBox.ItemTemplate> <DataTemplate> <Label Content="{Binding}"/> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 

例えば同じスペースを割り当てるのでしょうか? –

+0

あなたはそれが何を意味するか分かりません。 TexBlockの幅は "1 *"のようなものをサポートしていませんが、列定義を持つグリッドを使用することを意味するならば、私はそれを試しましたが何もしません。 – Shaggydog

答えて

1

あなたはItemsPanelとしてUniformGridとの選択をサポートしていたListBoxを使用することができます。 UniformGridは

uniform

+0

これが機能している間に、アイテム間の境界線を追加したり、選択したアイテムのデフォルトの背景色を変更したりするのに問題があります。 ? – Shaggydog

+0

@Shaggydog、色設定の例については[this Q + A](https://stackoverflow.com/questions/7059526/set-background-color-for-selected-items-in-a-listbox)をチェックしてください。separator:私は、Label(Label BorderThickness = "1,0" BorderBrush = "Red" ')やLabelの周りのBorder要素にサイドボーダーを追加することから始めます。現時点ではIDEを使用していないので、問題についてより詳細なヘルプが必要な場合は、新しい質問をすることをお勧めします。 – ASh

関連する問題