我有GridView
TextBlock
和Button
。目前,MinWidth
GridView
的{{1}}已修复。 DataTemplate
ss的TextWrapping
属性设置为TextBlock
。
最后Wrap
有更多要显示的文字(包装为ON)。
我想要做的是,如果我点击一个文本块并且它有更多要显示的文本,那么它将展开(高度)以显示全文。为此,我想尽快切换其DataTemplate
属性。但它似乎并没有这样做。
这是我的XAML:
TextWrapping
这是我的点击事件:
<GridView Name="TagsGridView"
ItemsSource="{x:Bind TagsList, Mode=OneWay}"
SelectionMode="None">
<GridView.ItemTemplate>
<DataTemplate x:DataType="x:String">
<Grid Background="#1A503E"
MinWidth="150">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{x:Bind}"
Grid.Column="0"
Height="Auto"
TextTrimming="CharacterEllipsis"
TextWrapping="Wrap"
VerticalAlignment="Center"
Foreground="White"
Padding="10"
Tapped="TextBlock_Tapped"/>
<Button Content=""
Name="btnTagDelete"
Click="btnTagDelete_Click"
Foreground="White"
Grid.Column="1"
Width="40"
Height="40"
FontFamily="Segoe MDL2 Assets"/>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
这会导致文本块显示更多文本,但不会更改高度,因为未显示所有文本。我还试图像这样随意增加private void TextBlock_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
var textBlock = sender as TextBlock;
if (textBlock.TextWrapping == TextWrapping.Wrap) textBlock.TextWrapping = TextWrapping.NoWrap;
else textBlock.TextWrapping = TextWrapping.Wrap;
}
的高度:
TextBlock
这样做确实会使模板的高度增加20(单位),但private void TextBlock_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
var textBlock = sender as TextBlock;
textBlock.Height = 1000;
}
内的Text
变为空白。
达到我想要的正确方法是什么?