9

テキストのブロックをリストするために使用している非常に単純な WPF ListView があります。垂直にスクロールしたいのですが、水平スクロールがないようにテキストを折り返す必要があります。私が見たすべての例は、過度に複雑な DataGridView ネスト ソリューションです。ただし、これは非常に単純なユースケースのように思えます。これが私の現在のコードです:

<ListView  
        Height="Auto"
        Width="Auto"
        Margin="0"
        Name="mLogListView" 
        FontWeight="Bold"
        FontSize="16"
        SelectionMode="Single"
        ScrollViewer.HorizontalScrollBarVisibility="Disabled"
        HorizontalContentAlignment="Stretch"/>

ScrollViewer.Horizo​​ntalScrollBarVisibility および Horizo​​ntalContentAlignment プロパティを設定しようとしましたが、テキストがコントロールの端からはみ出し、折り返されません。

各アイテムはListView.Itemsコレクションに追加され、ListViewItemオブジェクトになります。テキストはアイテムのContentプロパティに設定されます。

リストにテキスト時間を追加するコードは次のとおりです。

ListViewItem item = new ListViewItem();            
item.Content = "Item text is set here, but refuses to wrap in list view!";
mLogListView.Items.Add(item);

ありがとうございました。

4

2 に答える 2

20

これはあなたが必要とするものです

<ListView Margin="12,23,309,191"
        Name="mLogListView" 
        FontWeight="Bold"
        FontSize="16"
        SelectionMode="Single"
        ScrollViewer.HorizontalScrollBarVisibility="Disabled"
        HorizontalContentAlignment="Stretch" >
<!-- here set the itemTemplate to a TextBlock that can wraps-->
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=.}" TextWrapping="Wrap"></TextBlock>
            </DataTemplate>
        </ListView.ItemTemplate>
</ListView>

Text="{Binding Path=.}"と同等の構文に注意してくださいText="{Binding}"。これは、空のバインディング構文と呼ばれます。

この場合Text、ListViewItem オブジェクト全体にバインドされます。空のバインディング構文は、アイテムの単一のプロパティだけでなく、オブジェクト アイテム全体にバインドする場合に便利です。

ソース オブジェクト (ListViewItem) は文字列型であり、単に文字列自体にバインドする必要があるため、これはこの例にとって便利です。

詳細については、値へのパスの指定セクションのmsdnを参照してください。

于 2012-10-25T07:26:31.850 に答える