我一直在努力一段時間,如何在WinRT/UWP應用程序中與綁定級別上的設置進行最佳「交互」。我一直在尋找有關這方面的最佳做法,但我沒有找到明確的答案。到目前爲止,我在我的應用程序中完成的工作如下:綁定最佳實踐的應用程序設置
- 定義一個實現INotifyPropertyChanged的BindableBase。
創建從BindableBase繼承,看起來有點像這樣一個的AppSettings類:
public class AppSettings : BindableBase { ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; public string MySetting { get { if (!localSettings.Values.ContainsKey("MySetting")) localSettings.Values["MySetting"] = "Some default value"; return localSettings.Values["MySetting"].ToString(); } set { localSettings.Values["MySetting"] = value; RaisePropertyChanged(); } } }
定義視圖模型具有的AppSettings屬性:
public class SettingsViewModel { public AppSettings Settings { get; set; } = new AppSettings(); }
綁定到設置屬性在視圖中:
<TextBlock Text="{Binding Settings.MySetting, Mode=TwoWay}">
我以前見過並使用過具有設置服務的實現,但這些應用程序不需要設置更改即可立即生效。所以我基本上要問的是:如果設置的更改應該立即生效,上述實現是綁定到設置的好方法嗎?如果不是,你推薦什麼?
相關:[最佳實踐殭屍](http://meta.stackexchange.com/a/142354/1228)此外,可以使用你的意思*去實際的說明*。你的意思是立即保存嗎?我知道在WPF中,框架中沒有任何東西可以爲你做任何事情。你似乎已經有了應該工作的東西(ish?)。如果它沒有做你所需要的,那就改變它的代碼。 – Will
我認爲你的實施是好的,並按照你的情況工作。如果您需要立即應用每個設置(而不是單擊保存按鈕),則必須在屬性集中分配新值(如您所用)。任何訂閱的監聽器都將在此時觸發屬性集中的更改。 –
@我並不是在尋找最佳實踐,但是如果我的實施出現問題,因爲我覺得它在性能方面效率不高。 – Abdousamad