这是我尝试过的。请注意,我删除了部分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
有人可以告诉我,如果我遗漏了一些明显的东西。我尝试了一切但没有成功。
答案 0 :(得分:2)
尝试更改顺序,如下所示:
AS.phrase = new PSCViewModel() { English = "abcd" };
wordGrid.BindingContext = AS.phrase;
每当你设置BindingContext
时,它就会被应用。如果您之后进行了更改,则可以,但是您需要实现INotifyPropertyChanged
事件以向UI发出指示哪个属性已更改的信号。只有这样才会在UI中更新。