如何将字段的值绑定到Xamarin中的标签?

时间:2017-07-12 05:40:17

标签: xamarin xamarin.forms

这是我尝试过的。请注意,我删除了部分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";
    }

我的问题是,当我使用Binding English时,标签永远不会显示文字abcd,但我确实看到了XXXX

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

1 个答案:

答案 0 :(得分:2)

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

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

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