如何更改包含在列表视图标题中的 TextBlock 的值?

问题描述 投票:0回答:1

我有一个 Listview,仅将标题设置为显示来自另一个列表的总计。如何访问 Textblock tbkValue 以更改其 Text 属性?

<ListView x:Name="lvwTotals" Margin="1,0,3,3" ScrollViewer.HorizontalScrollBarVisibility="Auto" >
                    <ListView.ItemContainerStyle>
                        <Style TargetType="ListViewItem">
                            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                        </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.HeaderTemplate>
                        <DataTemplate>
                            <Grid Padding="12" Margin="3,5,1.5,5" Background="{ThemeResource SystemBaseLowColor}">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="30"/>
                                    <ColumnDefinition Width="30"/>
                                    <ColumnDefinition Width="30"/>
                                    <ColumnDefinition Width="30"/>
                                    <ColumnDefinition Width="70"/>
                                    <ColumnDefinition Width="70"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" x:Uid="PlayPgTbkTotals" TextWrapping="NoWrap" FontSize="12" />
                                <TextBlock Grid.Column="1" x:Name="tbkValue" TextWrapping="NoWrap" FontSize="12" />
                                <TextBlock Grid.Column="2" TextWrapping="NoWrap" FontSize="12" />
                                <TextBlock Grid.Column="3" TextWrapping="NoWrap" FontSize="12" />
                                <TextBlock Grid.Column="4" TextWrapping="NoWrap" FontSize="12" />
                                <TextBlock Grid.Column="5" TextWrapping="NoWrap" FontSize="12" />
                                <TextBlock Grid.Column="6" TextWrapping="NoWrap" FontSize="12" />
                            </Grid>
                        </DataTemplate>
                    </ListView.HeaderTemplate>
                </ListView>
c# listview uwp textblock
1个回答
0
投票

一个简单的方法是使用 VisualTreeHelper 类

代码隐藏:

 private void Button_Click(object sender, RoutedEventArgs e)
    {
        var textblcok = MyFindChildByName(lvwTotals, "tbkValue") as TextBlock;
        textblcok.Text = "New Content";
    }

    public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName)
    {
        int count = VisualTreeHelper.GetChildrenCount(parant);

        for (int i = 0; i < count; i++)
        {
            var MyChild = VisualTreeHelper.GetChild(parant, i);
            if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
                return MyChild;

            var FindResult = MyFindChildByName(MyChild, ControlName);
            if (FindResult != null)
                return FindResult;
        }

        return null;
    }
© www.soinside.com 2019 - 2024. All rights reserved.