在GridView中更改TextBlock的TextWrapping属性

时间:2017-07-04 11:01:13

标签: xaml uwp

我有GridView TextBlockButton。目前,MinWidth GridView的{​​{1}}已修复。 DataTemplate ss的TextWrapping属性设置为TextBlock

看起来像 this:

最后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="&#xE10A;" 
                        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变为空白。

达到我想要的正确方法是什么?

0 个答案:

没有答案