gpt4 book ai didi

wpf - 文字环绕、网格和星号调整

转载 作者:行者123 更新时间:2023-12-04 22:23:16 24 4
gpt4 key购买 nike

我有一些 text data我想在 Grid 中显示, 有三列,中间一列的宽度是其他两列的两倍,占据了整个网格的宽度。 text很长,需要包裹起来。我无法开始工作(从过去这里的其他查询中,我看到其他人也遇到了类似的问题)是让自动换行和调整网格大小来工作。我所拥有的是:

<Window.Resources>
<local:DTData x:Key="dtData" />
</Window.Resources>

<StackPanel DataContext="{StaticResource dtData}">
<ListBox ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border x:Name="a" Grid.Column="0" Margin="4"/>
<TextBlock Margin="4" Grid.Column="0" TextWrapping="Wrap"
Text="{Binding A}" Width="{Binding ActualWidth, ElementName=a }" MinWidth="100"/>
<Border x:Name="b" Grid.Column="1" Margin="4"/>
<TextBlock Margin="4" Grid.Column="1" TextWrapping="Wrap"
Text="{Binding B}" Width="{Binding ActualWidth, ElementName=b }" MinWidth="100"/>
<Border x:Name="c" Grid.Column="2" Margin="4"/>
<TextBlock Margin="4" Grid.Column="2" TextWrapping="Wrap"
Text="{Binding C}" Width="{Binding ActualWidth, ElementName=b }" MinWidth="100"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>

这使用 Border技巧来自 WPF TextBox and Scroll behavior强制文本换行工作,但列的宽度是设置的最小宽度或最长的单词(如果更大)。

有谁知道强制列适合网格宽度的方法?

最佳答案

你确定要换行吗?或者您的目标是文本修剪?我问是因为当我在 kaxaml 中键入以下 xaml 时,中间列中的文本被完美包裹:

<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<StackPanel>
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" Width="350">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Margin="4" Grid.Column="0" TextWrapping="Wrap"
Text="Binding A" MinWidth="100"/>
<TextBlock Margin="4" Grid.Column="1" TextWrapping="Wrap"
Text=" Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco" MinWidth="100"/>
<TextBlock Margin="4" Grid.Column="2" TextWrapping="Wrap"
Text="Binding C" MinWidth="100"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
<TextBlock Text="" />
<TextBlock Text=""/>
<TextBlock Text=""/>
</ListBox>
</StackPanel>
</Grid>
</Page>

如果要修剪文本,只需设置 TextWrapping="NoWrap"和 TextTrimming 到 TextTrimming="CharacterEllipsis"需要的地方。

也可能是您没有提供所有数据,以重现您所描述的问题...

关于wpf - 文字环绕、网格和星号调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1815889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com