如何在按钮XAML C#UWP中访问命名的TextBlock

问题描述

我将UWP应用程序更改为具有响应式UI。 从那时起,我在将文本放入按钮时遇到了问题。 这是XAML:

    <Page
    x:Class="Stock_Manager_Windows.IncomeOrder3"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Stock_Manager_Windows"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="#FFBBBBBB">
        <Grid.RowDeFinitions>
            ...
        </Grid.RowDeFinitions>
        <Grid.ColumnDeFinitions>
            ...
        </Grid.ColumnDeFinitions>
...
        <Button x:Name="Envoyer" Content="Envoyer" HorizontalAlignment="Stretch" Margin="2,2,2" VerticalAlignment="Stretch" Grid.Column="4" Grid.ColumnSpan="2" Grid.Row="4" Background="#249C23" Foreground="White" FontWeight="Bold" Click="buttonSendSelectedItems_Click">
            <Button.ContentTemplate>
                <DataTemplate x:Name="EnvoyerDataTemplate" >
                    <ViewBox>
                        <TextBlock x:Name="EnvoyerTxt" Text="Envoyer"/>
                    </ViewBox>
                </DataTemplate>
            </Button.ContentTemplate>
        </Button>
...
    </Grid>
</Page>

在我以前用此C#代码更新按钮中的文本之前,

Envoyer.Content = "Envoyer (" + count + ")";

现在不可能了... 然后,我首先尝试了:

envoyerTxt.Text = "Envoyer (" + count + ")";

我尝试使用通过以下链接解释的解决方案,但似乎代码已过时,不相关或我太愚蠢而无法理解。

WPF How to access control from DataTemplate

Accessing a control which is in a contentpresenter in c#

How do I access a control inside a XAML DataTemplate?

how to access a control within Data Template from code behind?

FindVisualChild reference issue

有人可以向我解释解决方案吗? 也许问题不在C#代码中,而在XAML中,我没有任何线索。

解决方法

在您的ContentTemplate内部,将TextBlock更改为此。

 <TextBlock x:Name="EnvoyerTxt" Text="{Binding}" />  

这意味着现在,无论设置了什么内容(文本),它都将绑定到模板的TextBlock文本属性,并且将相应地更改。

为了清楚起见,您不能通过模板中的元素名称访问元素。因为模板是在运行时而不是在编译时加载的。这就是为什么在模板内部只有绑定才能用于分配数据的原因。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...