【问题标题】:Text not wrapping in ListViewItem文本未在 ListViewItem 中换行
【发布时间】:2018-09-28 07:02:22
【问题描述】:

ListViewItems 正在从 TextBlock 元素获取它们的宽度。我希望 ListViewItem 适合 ListView。我在其他帖子中看到,制作HorizontalContentAlignment="Stretch" 可以解决问题,但我的问题仍然存在。 ItemTemplate 中的第二个TextBlock 元素设置为WrapWithOverflow

来源:

http://www.teixeira-soft.com/bluescreen/2016/03/21/c-how-to-make-a-panel-within-a-datatemplate-fill-the-entire-width-of-a-listview-or-itenscontrol-derivative/

代码:

<UserControl x:Class="XXXX.Views.XXXXView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:cal="http://www.caliburnproject.org"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid Background="{StaticResource BlackBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="20*"/>
            <ColumnDefinition Width="32*"/>
            <ColumnDefinition Width="6*"/>
            <ColumnDefinition Width="32*"/>
        </Grid.ColumnDefinitions>    
        <DockPanel Grid.Column="1">
            <ListView Grid.Column="1"
                      x:Name="UniqueShortDescriptions" 
                      VerticalAlignment="Stretch"
                      ItemsSource="{Binding UniqueShortDescriptions}"
                      SelectedItem="{Binding SelectedUniqueShortDescriptions}"
                      cal:Message.Attach="[Event SelectionChanged] = [Action SelectionChanged($this, $eventArgs)]">
                <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                    </Style>
                </ListView.ItemContainerStyle>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Border BorderBrush="Navy"
                                BorderThickness="3"
                                Margin="3"
                                Padding="2">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition/>
                                    <RowDefinition/>
                                    <RowDefinition/>
                                </Grid.RowDefinitions>
                                <TextBlock Grid.RowSpan="3"
                                           Grid.Column="0"
                                           Text="{Binding Path=Date}" 
                                           Foreground="Black"
                                           VerticalAlignment="Center"
                                           TextBlock.FontWeight="ExtraBold"/>
                                <TextBlock Grid.Row="0"
                                           Grid.Column="1"
                                           Text="{Binding Path=LongDescription}" Foreground="{StaticResource BlackBrush}"
                                               TextWrapping="WrapWithOverflow"/>
                                <!--<TextBlock Text="{Binding Path=ShortExpenseDescription}" Foreground="{StaticResource BlackBrush}"/>-->
                                <TextBlock Grid.Row="1"
                                           Grid.Column="1"
                                           Text="{Binding Path=Cost}" Foreground="{StaticResource BlackBrush}"/>
                                <TextBlock Grid.Row="2"
                                           Grid.Column="1"
                                           Text="{Binding Path=Source}" Foreground="{StaticResource BlackBrush}"/>
                            </Grid>
                        </Border>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </DockPanel>
    </Grid>
</UserControl>

【问题讨论】:

  • 您的示例代码将第一个容器元素的 Horizo​​ntalAlignment 属性设置为拉伸,但您的代码设置了 ListViewItem 的 Horizo​​ntalAlignment 属性。因此,您可以将此属性设置为“Stretch”的主要边框元素。如果我不需要列,我主要使用 ListBox 并且它可以工作。

标签: c# wpf xaml


【解决方案1】:

我通过简单地禁用 ListView 的水平滚动来获得您发布的代码。

<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...

【讨论】:

  • 是的,我在发布这个问题后做了同样的事情。我确信这是更微妙的东西。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多