1

バインド可能なアイテムが 3 つある水平リストボックスがあります。それらをリストボックスの幅全体に広げるにはどうすればよいですか? たとえば、1 番目の要素は左側にあり、2 番目の要素は中央にあり、3 番目の要素は右側にあります。今は余白で揃えていますが、興味があります。余白なしで可能ですか?ListBox プロパティ Horizo​​ntalContentAlignment を Stretch に設定しようとしましたが、必要なものが得られませんでした。

ありがとう。


あなたのアドバイスを試してみましたが、残念ながら望ましい結果が得られませんでした。ここに私のXAML:

        <ListBox>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>
            </ListBox.ItemContainerStyle>
            <ListBoxItem Content="1"/>
            <ListBoxItem Content="2"/>
            <ListBoxItem Content="3"/>
        </ListBox>

ここで私が得るもの:

ここに画像の説明を入力

そして私が欲しいのは以下です:

ここに画像の説明を入力

4

3 に答える 3

2

次のアプローチを試してください。

    <ListBox Grid.Row="1">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
                </Style>
            </ListBox.ItemContainerStyle>
            <ListBoxItem  HorizontalAlignment="Stretch">
            <Grid>
                <TextBlock  Text="1"   HorizontalAlignment="Left"/>
                <TextBlock  Text="2"   HorizontalAlignment="Center"/>
                <TextBlock  Text="3"   HorizontalAlignment="Right"/>
            </Grid>
        </ListBoxItem>
    </ListBox>
于 2013-02-27T13:09:51.370 に答える
0

まだ解決策を見つけたかどうかはわかりませんが、これでアイテムを均等に配置することができました:

<ListBox>               
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBoxItem Content="Item1"/>
    <ListBoxItem Content="Item2"/>
    <ListBoxItem Content="Item3"/>
</ListBox>

https://stackoverflow.com/a/1270813/124721にあります。

次に、ItemContainerStyle を混合すると、コンテンツを中央に配置できます。

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
    </Style>
</ListBox.ItemContainerStyle>

ただし、1 つのアイテムを左に配置し、次に別のアイテムを中央に配置し、最後のアイテムを右に配置することはできませんでした。アラインメントをアイテムに直接適用すると、パネル サイズが縮小されていました。しかし、スタック パネルのような別のコンテナーにラップされていれば、機能する可能性があります。

于 2013-03-15T01:31:21.987 に答える
0

これは難しい問題です :) これを行うには、ListBox.ItemContainerStyle を変更する必要があります。MSDN フォーラムで回答を確認してください。また、このサイトの次のリンクも確認してください。

于 2013-02-26T10:03:22.240 に答える