【问题标题】:How can I bind the value of a field to a label in Xamarin?如何将字段的值绑定到 Xamarin 中的标签?
【发布时间】:2017-07-12 05:40:17
【问题描述】:

这是我尝试过的。请注意,我删除了部分 XAML 以使问题更短,但我通过在我的 cs 中设置 detailx.text 对其进行了测试,当我这样做时它会显示 XXXX:

<Frame x:Class="Japanese.PhrasesFrame">
    <StackLayout x:Name="phrasesFrameStackLayout" >
        <Grid x:Name="phraseGrid">
            <Grid x:Name="wordGrid" >
                <Grid x:Name="detailGrid">
                   <Label x:Name="detail1" Text="{Binding English}" XAlign="Center" />
                   <Label x:Name="detailx" XAlign="Center" />

在我的 CS 中有

    public PhrasesFrame()
    {
        InitializeComponent();
        correctButton.Clicked += correctButtonClicked;
        resetButton.Clicked += resetButtonClicked;
        SetBindings();
        wordGrid.BindingContext = AS.phrase;
    }

在一个方法中我有这个:

public partial class PhrasesFrame : Frame
{
    Random rand = new Random();

    public PhrasesFrame()
    {
        InitializeComponent();
        wordGrid.BindingContext = AS.phrase;
        AS.phrase = new PSCViewModel() { English = "abcd" };
        this.detailx.Text = "XXXX";
    }

我的问题是,当我使用绑定英语时,标签​​永远不会显示文本abcd,但我确实看到了XXXX

如果我遗漏了一些明显的东西,谁能告诉我。我尝试了一切,但没有成功。

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    尝试更改顺序,如下所示:

    AS.phrase = new PSCViewModel() { English = "abcd" };
    wordGrid.BindingContext = AS.phrase;
    

    当您设置BindingContext 时,它会按原样应用。如果您之后进行更改,则可以,但您需要实现 INotifyPropertyChanged 事件以向 UI 发出信号,指示哪个属性已更改。只有这样,它才会在 UI 中更新。

    【讨论】:

    • 是的,这似乎是问题所在,做你所做的就可以了。我对 INotifyPropertyChanged 有一些疑问,但会将其变成另一个问题。将在 8 分钟内接受您的回答。
    • 顺便说一句,你有一个非常好的博客!看了你的个人资料才看到的
    • 谢谢!另请查看我的 YouTube 频道以获得更清晰的说明,如果您需要其他任何内容,请随时直接与我联系。
    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 2020-02-10
    • 2017-08-17
    • 2021-08-17
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多