我有一个非常简单的WPF ListView,我用它来列出文本块。我希望它垂直滚动,但文本应该换行,这样就没有水平滚动。我见过的所有例子都是过于复杂的DataGridView嵌套解决方案。然而,这似乎是一个简单的用例。这是我目前的代码:
<ListView
Height="Auto"
Width="Auto"
Margin="0"
Name="mLogListView"
FontWeight="Bold"
FontSize="16"
SelectionMode="Single"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalContentAlignment="Stretch"/>
我已尝试设置ScrollViewer.HorizontalScrollBarVisibility和HorizontalContentAlignment属性,但文本只是在控件的末尾运行而不会换行。
每个项目都会添加到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);
谢谢。
答案 0 :(得分:14)
这应该是你需要的
<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)的类型为string,您只想绑定到字符串本身。
有关详细信息,请参阅<{3>}部分指定值的路径
答案 1 :(得分:0)
我想在ListView中查看图像,默认情况下只显示一列。为防止这种情况,您可以插入以下代码:
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Margin="0" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
现在显示ListView,而不是一列,只显示一行:-( 为防止这种情况,您可以插入以下代码行:
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
所以看起来像这样:
<ListView ItemsSource="{Binding YourItemsSource...}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Border ... and so on ...
我希望,它可以帮助某人 ; - )