我目前正在使用 ListView。它的 ListViewItems 由一个左对齐的 TextBlock 和一个右对齐的 Button 组成:
现在,我想让我的 Items 始终显示 Button 并相应地缩短 TextBlock,因此它们不需要显示 ScrollBar:
不幸的是,现在这不起作用:
我该怎么做才能让它发挥作用?
这是我的示例代码:
<Window x:Class="JansWpfTestUmgebung.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ListView x:Name="AllItemsList"
HorizontalContentAlignment="Stretch"
HorizontalAlignment="Stretch">
<ListViewItem>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
TextTrimming="CharacterEllipsis"
Text="Item 1 with a very long description"/>
<Button Grid.Column="1"
Content="Modify" />
</Grid>
</ListViewItem>
<ListViewItem>Item 2</ListViewItem>
<ListViewItem>Item 3</ListViewItem>
</ListView>
</Window>
感谢您的任何提示! :-)
最佳答案
您可以通过在按钮列上强制设置大小来做到这一点:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="JansWpfTestUmgebung.MainWindow"
d:DesignWidth="394">
<ListView x:Name="AllItemsList"
HorizontalContentAlignment="Stretch"
HorizontalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListViewItem>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="45" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
TextTrimming="CharacterEllipsis"
Text="Item 1 with a very long description"/>
<Button Grid.Column="1"
Content="Modify"/>
</Grid>
</ListViewItem>
<ListViewItem Content="Item 2"/>
<ListViewItem Content="Item 3"/>
</ListView>
</Window>
它的方式是,它尽最大努力保持 * 大小的列尽可能大,以牺牲自动大小的列为代价。但是固定大小将胜过 * 大小。
关于WPF:如何让 ListViewItems 适合窗口宽度并使用 TextEllipsis,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6998237/