Xaml 更改GridView中TextBlock的TextWrapping属性

Xaml 更改GridView中TextBlock的TextWrapping属性,xaml,uwp,Xaml,Uwp,我有一个网格视图,带有文本块和按钮。目前,GridView的DataTemplate的MinWidth是固定的。TextBlockss的TextWrapping属性设置为Wrap 看起来像 最后一个DataTemplate有更多文本要显示(包装处于启用状态) 我想做的是,如果我点击一个文本块,它有更多的文本显示,然后它会扩大(高度)显示全文。为此,我想在点击时切换其TextWrapping属性。但它似乎不是这样工作的 这是我的XAML: <GridView Name="TagsGridV

我有一个
网格视图
,带有
文本块
按钮
。目前,
GridView
DataTemplate
MinWidth
是固定的。
TextBlock
ss的
TextWrapping
属性设置为
Wrap

看起来像

最后一个
DataTemplate
有更多文本要显示(包装处于启用状态)

我想做的是,如果我点击一个文本块,它有更多的文本显示,然后它会扩大(高度)显示全文。为此,我想在点击时切换其
TextWrapping
属性。但它似乎不是这样工作的

这是我的XAML:

<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="&#xE10A;" 
                        Name="btnTagDelete"
                        Click="btnTagDelete_Click"
                        Foreground="White"
                        Grid.Column="1"                                             
                        Width="40"
                        Height="40"  
                        FontFamily="Segoe MDL2 Assets"/>
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>
这会导致textblock显示更多的文本,但不会更改所有文本未显示的高度。我还试图任意增加
TextBlock
的高度,如下所示:

private void TextBlock_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
    var textBlock = sender as TextBlock;
    textBlock.Height = 1000;
}
这样做确实会使模板的高度增加20(单位),但是
TextBlock
内的
Text
变为空白


实现我想要的东西的正确方法是什么?

网格视图中的每个项目都具有默认的
ItemTemplate
高度和宽度完全相同。如果不需要虚拟化,请尝试使用
VariableSizedWrapGrid
代替。如上所述,如果没有给定固定大小,默认的GridView面板(ItemsWrapGrid)将项目大小调整为第一个项目的大小。但是,如果不需要虚拟化,那么与VariableSizedWrapGrid相比,您更适合一些WrapPanel的实现。如果你这样做。。。您必须手动处理它。@是否提供切换功能?切换应由每个
标记
控件处理。而且@JohnnyWestlake是对的,这里的
WrapPanel
是一个更好的选择。实际上,我使用来自的
WrapPanel
实现了几乎完全相同的标记UI。我只建议不要将它们包装成多行,可以尝试只使用一行,但默认情况下会修剪文本,并在点击时扩展到全宽。因为如果一个项目更高,你会在用户界面上留下很多空白,看起来不太好。
private void TextBlock_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
    var textBlock = sender as TextBlock;
    textBlock.Height = 1000;
}