如何在不重新加载 Xamarin 页面的情况下从另一个页面获取首选项值
How to get Preferences value from another page without reloading the page in Xamarin
我有
Page1.xaml
<Label x:Name="getPreferences" />
<Button x:Name="one" Clicked="one_Clicked"/>
Page1.xaml.cs
public Page1()
{
string getpre = Preferences.Get("PreOne", "defaultpre");
getPreferences.Text = getpre;
}
private async void one_Clicked(object sender, EventArgs e)
{
PopupNavigation.Instance.PushAsync(new Popup());
}
Popup.xaml(使用 Rg 弹出窗口)
<popup:PopupPage
....
<StackLayout x:Name="ss">
<Image Source="img"/>
<Label Text="Testtttt" />
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="ss_Tapped" />
</StackLayout.GestureRecognizers>
</StackLayout>
</popup:PopupPage>
Popup.xaml.cs
private void ss_Tapped(object sender, EventArgs e)
{
string setone = "01";
Preferences.Set("PreOne", setone);
}
如何在无需重新加载页面 Page1 的情况下获取 Preferences
的值以分配给标签 getPreferences
。请帮忙。谢谢
尝试使用 ViewModel 和绑定,以便所有这些事情自动发生
Preferences Essential 包没有更改首选项的事件,因此每次更改时都必须获取您的值。我建议您在弹出窗口中创建自己的事件并在您的值更改时触发它
1.PopUp.xaml.cs
public event EventHandler PreOneChanged;
private void ss_Tapped(object sender, EventArgs e)
{
string setone = "01";
Preferences.Set("PreOne", setone);
PreOneChanged?.Invoke(setone,EventArgs.Empty);
}
2.Page1.xaml.cs
public Page1()
{
Init();
}
private void Init()
{
string getpre = Preferences.Get("PreOne", "defaultpre");
getPreferences.Text = getpre;
}
private async void one_Clicked(object sender, EventArgs e)
{
var popUp = new Popup();
popUp.PreOneChanged += (ss, ee) =>
{
Init();
};
PopupNavigation.Instance.PushAsync(popUp);
}
现在,当您在 PopUp 中更改值时,您的事件调用和页面中的值也会更改
我有
Page1.xaml
<Label x:Name="getPreferences" /> <Button x:Name="one" Clicked="one_Clicked"/>
Page1.xaml.cs
public Page1() { string getpre = Preferences.Get("PreOne", "defaultpre"); getPreferences.Text = getpre; } private async void one_Clicked(object sender, EventArgs e) { PopupNavigation.Instance.PushAsync(new Popup()); }
Popup.xaml(使用 Rg 弹出窗口)
<popup:PopupPage .... <StackLayout x:Name="ss"> <Image Source="img"/> <Label Text="Testtttt" /> <StackLayout.GestureRecognizers> <TapGestureRecognizer Tapped="ss_Tapped" /> </StackLayout.GestureRecognizers> </StackLayout> </popup:PopupPage>
Popup.xaml.cs
private void ss_Tapped(object sender, EventArgs e) { string setone = "01"; Preferences.Set("PreOne", setone); }
如何在无需重新加载页面 Page1 的情况下获取 Preferences
的值以分配给标签 getPreferences
。请帮忙。谢谢
尝试使用 ViewModel 和绑定,以便所有这些事情自动发生
Preferences Essential 包没有更改首选项的事件,因此每次更改时都必须获取您的值。我建议您在弹出窗口中创建自己的事件并在您的值更改时触发它
1.PopUp.xaml.cs
public event EventHandler PreOneChanged;
private void ss_Tapped(object sender, EventArgs e)
{
string setone = "01";
Preferences.Set("PreOne", setone);
PreOneChanged?.Invoke(setone,EventArgs.Empty);
}
2.Page1.xaml.cs
public Page1()
{
Init();
}
private void Init()
{
string getpre = Preferences.Get("PreOne", "defaultpre");
getPreferences.Text = getpre;
}
private async void one_Clicked(object sender, EventArgs e)
{
var popUp = new Popup();
popUp.PreOneChanged += (ss, ee) =>
{
Init();
};
PopupNavigation.Instance.PushAsync(popUp);
}
现在,当您在 PopUp 中更改值时,您的事件调用和页面中的值也会更改