我目前正在使用 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/

10-13 02:43