繁体   English   中英

WPF 文本框未在 DataTemplate 中修剪

[英]WPF TextBox not trimming in DataTemplate

我在 WPF 应用程序中的 DataTemplate 中使用 TextTrimming 设置为 CharacterElipsis 的 TextBox 有一个奇怪的问题。 在应用程序开始时,一切正常。 但是当我调整 window 的大小时 - 减小宽度,修剪不起作用。

在下面的示例中:

<Grid>
        <DockPanel>
            <DockPanel.Resources>
                <DataTemplate x:Key="lowerLevel" >
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="34*" />
                            <ColumnDefinition Width="26*" />
                            <ColumnDefinition Width="26*" />
                            <ColumnDefinition Width="14*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="textboxvalue1" Grid.Column="0" FontWeight="Bold" VerticalAlignment="Center" Margin="15,10,0,10" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" />
                        <TextBlock Text="textboxvalue2" Grid.Column="1" FontWeight="Bold" VerticalAlignment="Center" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"   />
                        <TextBlock Text="textboxvalue3" Grid.Column="2" FontWeight="Bold" VerticalAlignment="Center"  Margin="0,10,0,10" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"  />
                        <CheckBox IsChecked="True" Content="ApprovedText"  FontWeight="Bold" Grid.Column="3"  VerticalAlignment="Center"  Margin="0,10,15,10" />
                    </Grid>
                </DataTemplate>
            </DockPanel.Resources>
            <ListView x:Name="listViewControl" ItemTemplate="{StaticResource lowerLevel}" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch"  HorizontalContentAlignment="Stretch" />
            
        </DockPanel>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="34*" />
                <ColumnDefinition Width="26*" />
                <ColumnDefinition Width="26*" />
                <ColumnDefinition Width="14*" />
            </Grid.ColumnDefinitions>
            <TextBlock Text="textboxvalue1" Grid.Column="0" FontWeight="Bold" VerticalAlignment="Center" Margin="15,10,0,10" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" />
            <TextBlock Text="textboxvalue2" Grid.Column="1" FontWeight="Bold" VerticalAlignment="Center" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"   />
            <TextBlock Text="textboxvalue3" Grid.Column="2" FontWeight="Bold" VerticalAlignment="Center"  Margin="0,10,0,10" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"  />
            <CheckBox IsChecked="True" Content="ApprovedText"  FontWeight="Bold" Grid.Column="3"  VerticalAlignment="Center"  Margin="0,10,15,10" />
        </Grid>
    </Grid>

我有两个相同的网格,但第一个放在 DataTemplate 中,第二个只是一个单独的控件。 在调整 window 的大小时,底部网格中的文本框正在正确修剪,但是在 window 调整大小时,来自 DataTemplate 的文本框不适合父列的宽度。

后面的代码是:

public partial class MainWindow : Window
    {
        private ListCollectionView comparedFamiliesView;
        public ListCollectionView ComparedFamiliesView
        {
            get
            {
                if (comparedFamiliesView == null)
                {
                    comparedFamiliesView = new ListCollectionView(new List<Object>() { new Object(), new Object(), new Object() });
                }
                return comparedFamiliesView;
            }
        }
        public MainWindow()
        {
            InitializeComponent();
            listViewControl.ItemsSource = ComparedFamiliesView;
        }
    }

它基本上添加了三个对象以在 ListView 上查看内容。

我尝试了 VerticalAlignment、VerticalContentAlignment 的不同组合 - 没有用。 我尝试将每个 TextBox 放在单独的 Grid 中,以便将其 Width 绑定到 TextBox Width 或 MaxWidth,例如:

<Grid Grid.Column="0" x:Name="grid1">
    <TextBlock Text="textboxvalue1" FontWeight="Bold" VerticalAlignment="Center" Margin="15,10,0,10" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" MaxWidth="{Binding ActualWidth, ElementName=grid1}" />
</Grid>

也没有用。

如何强制 DataTemplate 中的 TextBoxes 与单独 Grid 中的 TextBoxes 行为相同? 或者在 DataTemplate 中使用 TextTrimming 时我做错了什么。

谢谢您的帮助!!!

问候,

爱丽儿

尝试将ListViewScrollViewer.HorizontalScrollBarVisibility附加属性设置为Disabled

<ListView x:Name="listViewControl" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM