如何在Xamarin中更改标签文本

Ble*_*ari 4 c# xaml xamarin xamarin.forms

我对Xamarin表格比较陌生。我发现我无法从后面的代码中更改标签文本。通常我会的myLabel.text = variable。这在Xamarin中有效吗?如果可以,为什么此代码不更改文本?

Label_ControlSW.Text = controlSW_Out;
            Label_BLESW.Text = bleSW_Out;
            Label_Mode.Text = mode_Out;
Run Code Online (Sandbox Code Playgroud)

XAML文件

<Label x:Name="Label_ControlSW" Grid.Row="1" Grid.Column="1" HorizontalOptions="Center"  VerticalOptions="Center" FontSize="17" TextColor="White"/>
                <Label x:Name="Label_BLESW" Grid.Row="2" Grid.Column="1" HorizontalOptions="Center"  VerticalOptions="Center" FontSize="17" TextColor="#525252"/>
                <Label x:Name="Label_Mode"  Grid.Row="4" Grid.Column="1" HorizontalOptions="Center"  VerticalOptions="Center" FontSize="17" TextColor="White"/>
Run Code Online (Sandbox Code Playgroud)

Ali*_*kal 6

尝试初始化TextXAML 中的值,如下所示:

<Label x:Name="YourLableName" Text="Initial Label"/>
Run Code Online (Sandbox Code Playgroud)

然后在后面的代码中访问它,如下所示:

YourLableName.Text = "Desired Name";
Run Code Online (Sandbox Code Playgroud)

或者

YourLableName.Text = variable;
Run Code Online (Sandbox Code Playgroud)

  • 标签只显示“初始标签”而不是变量 (3认同)

Die*_*uza 6

这在Xamarin中有效吗?

是的,它确实。

如果可以,为什么此代码不更改文本?

由于该Label组件不受该变量的限制,因此仅在执行该操作时才获得其值,Label_ControlSW.Text = controlSW_Out;并且不再需要其他任何操作。

要使其正常工作,您基本上有两种选择:

1.每次更改时将值设置到标签上;

这里没有魔术。像Ali Heikal在他的答案中建议的那样设置值或变量

2.将页面(视图)绑定到Observable对象,然后视图将侦听可观察对象(通常是View Model)上的每个更改,并对此做出反应(例如,更改其自身Text值)。

我想您打算做的是第二个。因此,您可以在页面代码后面创建一个公共字符串属性,并将页面实例绑定到自身。像这样:

XAML

<Label Text="{Binding MyStringProperty}"
       .../>
Run Code Online (Sandbox Code Playgroud)

后面的代码

public partial class MyTestPage : ContentPage
{
    private string myStringProperty;
    public string MyStringProperty
    {
        get { return myStringProperty; }
        set 
        {
            myStringProperty = value;
            OnPropertyChanged(nameof(MyStringProperty)); // Notify that there was a change on this property
        }
    }

    public MyTestPage()
    {
        InitializeComponents();
        BindingContext = this;

        MyStringProperty = "New label text"; // It will be shown at your label
    }
}
Run Code Online (Sandbox Code Playgroud)

您应该看一下有关XF上的数据绑定和MVVM模式的官方文档,如果您是从Xamarin.Forms开始的,我强烈建议您遵循官方的入门指南,该指南针对每个主题都提供了清晰而深入的知识,以学习您的所有知识。需要。

希望对您有所帮助。