我正在實現MVVM並試圖從我的Xaml頁面的Switch中保存一個值。我想將這個值存儲到應用程序的屬性中。目前,我再次保存觸發器OnPropertyChanged的值,並且該值永遠不會更新。如何有效地將值保存在OnPropertyChangedEvent中?
我有一個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()方法,當值更新時,應用程序的屬性將被存儲/更新?
https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/application-class/#Persistence嘗試添加此'Application.Current.SavePropertiesAsync()' –
添加此幫助,除了不同時保存多個屬性。謝謝! – Zithro