1

私はこのようなものを持っています:

<ListBox ItemsSource="{Binding List}">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding Property}" TextWrapping="Wrap" Grid.Column="0"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

そして、私が抱えている問題は、テキストが長すぎると、期待どおりにラップするのではなく、TextBlock がグリッド列 (およびリストボックス) を展開することです。グリッドのスターサイズの概念を完全には理解していないかもしれませんが、列幅が「1 *」に設定されているため、「利用可能な残りのスペース」を意味するため、テキストブロックはそれを超えて拡張しようとしないでください。代わりにテキストを折り返す必要があります。

では、どうすればこの問題を解決できますか? ところで、Textblock 以外にも他のコンポーネントがあるため、Grid (またはその他のコンテナー) が必要です。また、Listbox 要素がスペース全体を占めるように、ItemContainerStyle セクションもあります。

前もって感謝します!

4

2 に答える 2

2

リストボックスに追加ScrollViewer.HorizontalScrollBarVisibility="Disabled"してみてください。

于 2012-05-06T01:26:19.613 に答える
-1

列定義が1つだけの場合は必要ありません。次を試してください。

<ListBox ItemsSource="{Binding List}"> 
    <ListBox.ItemContainerStyle> 
        <Style TargetType="ListBoxItem"> 
            <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
        </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBox.ItemTemplate> 
        <DataTemplate> 
            <Grid> 
                <TextBlock Text="{Binding Property}" TextWrapping="Wrap" HorizontalAlignment="Stretch"/> 
            </Grid> 
        </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
于 2012-05-06T13:01:57.443 に答える