我正在实现MVVM并尝试从我的Xaml页面的Switch中保存一个值。我想将此值存储到Application的属性中。目前,保存我所在的值再次触发OnPropertyChanged,并且该值永远不会更新。
我有一个BaseViewModel类:
public class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
protected void SetValue<T>(ref T backingField, T value, [CallerMemberName] string propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(backingField, value))
return;
backingField = value;
OnPropertyChanged(propertyName);
}
}
在我的ViewModel中:
private bool _sizeToggled;
public bool SizeToggled
{
get { return _sizeToggled; }
set
{
SetValue(ref _sizeToggled, value);
OnPropertyChanged(nameof(SizeToggled));
SaveValue();
}
}
private void SaveValue(){
Application.Current.Properties["SizeToggled"] = SizeToggled;
}
我的Xaml代码:
<StackLayout Orientation="Horizontal" Padding="10,0,0,0">
<Label Text="Size:" FontAttributes="Bold"/>
<Switch IsToggled="{Binding SizeToggled}"
HorizontalOptions="EndAndExpand"/>
</StackLayout>
如何实现我的SaveValue()方法,以便在更新值时存储/更新应用程序的属性?
答案 0 :(得分:0)
你检查过vm真的是你的datacontext吗?
答案 1 :(得分:0)
在同时保存多个应用程序属性时似乎存在问题。 将属性与save方法和
分开developer.xamarin.com/guides/xamarin-forms / ...尝试添加此Application.Current.SavePropertiesAsync() - Cole Xia
强制保存解决了问题。