c# - 从主页绑定(bind)到 Template10 设置

标签 c# winrt-xaml win-universal-app template10

到目前为止我很喜欢Template10,非常好。 不过,我对如何绑定(bind)到主页上的设置值有点困惑。 我添加了一个新的 bool 设置,该设置可以正确存储。 在我的主页上,我有一个与设置绑定(bind)的可见性:

Visibility="{Binding UseAmbientLightSensor, Converter={StaticResource CollapsedWhenFalseConverter}}"

这会按预期在应用程序启动时起作用,MainPageViewModel 从“设置”中读取值,并且网格根据该设置可见或折叠。

但是,我似乎无法让此绑定(bind)“监听”设置,如果我转到设置页面并更改该值,当我返回主页时,可见性不会改变。仅当我重新启动应用程序时它才有效。

在普通 Template10 安装中,这类似于将 MainPage 上的一个小 Logo 绑定(bind)到“设置”页面中的“UseLightThemeButton”设置,该设置会根据该设置进行更改。

最佳答案

好的,所以我想这是“官方”答案。但许多方法都是有效的。这个与模板最匹配。我会这样做:

public class MainPageViewModel : ViewModelBase
{
    Services.SettingService.SettingService _SettingService;

    public MainPageViewModel()
    {
        _SettingService = Services.SettingService.SettingService.Instance;
    }

    public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> state)
    {
        Windows.Storage.ApplicationData.Current.DataChanged += SettingsChanged;
        await Task.CompletedTask;
    }

    public override async Task OnNavigatedFromAsync(IDictionary<string, object> pageState, bool suspending)
    {
        Windows.Storage.ApplicationData.Current.DataChanged -= SettingsChanged;
        await Task.CompletedTask;
    }

    private void SettingsChanged(Windows.Storage.ApplicationData sender, object args)
    {
        RaisePropertyChanged(nameof(FontSize));
    }

    public double FontSize { get { return _SettingService.FontSize; } }
}

使用该 View 模型,您可以轻松绑定(bind)到设置(在本例中为 FontSize)。

祝你好运。

关于c# - 从主页绑定(bind)到 Template10 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35692793/

相关文章:

c# - Web 应用程序身份验证

c# - MVC3中的Page和ViewBag动态对象有什么区别?

c# - 如何使用 C# 仅请求 HTTP header ?

c# - 如何从 Windows 10 应用程序直播到 Youtube?

c# - 如何通过使用异步方法加载结果来在 Windows 8.1 中使用 SearchBox

c# - 如何在 Windows 事件查看器中删除和创建日志

xaml - 为什么 FlipView 会忽略 SelectedItem

c# - 通过 Storyboard 调整 Grid.Column 中的网格大小?

c# - 如何使用 MediaElement.SetPlaybackSource

c# - Uwp导航示例和焦点控制