UWP - 从另一个页面获取滑块值

UWP - Get Slidervalue from another Page

我有 2 个页面:我的主页和我的设置页面 - 都在 XAML 和 xaml.cpp 中作为代码隐藏。我还有一个 class,我想在其中使用 Settings-Class 的值。 (正如我已经在另一个 post 中询问的那样)我可以使用 XAML 标签 NavigationCacheMode="Enabled" 将设置页面中的值保存在缓存中。使用这个我的 SliderValue 保持不变,即使我切换到我的主页并再次返回到设置页面。

我现在想做的是:一旦更改滑块的值,就保存它,并将该值存储到我可以从第三个 Class 访问的变量中。

到目前为止我得到了什么(不工作,总是显示初始值'70'):

设置。xaml.cpp:

UWPApp::Settings::Settings()
{
    InitializeComponent();
    quality = sldQuality->Value;
}

int Settings::getQuality() {

    return quality;

}

void DirectX12XamlApp::Settings::sldQuality_ValueChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e)
{
    quality = sldQuality->Value;
}

在Settings.xaml.h中:

public:
        Settings();
        int getQuality();


private:
     int quality;

在Settings.xaml中:

<Slider x:Name="sldQuality" ValueChanged="sldQuality_ValueChanged" HorizontalAlignment="Left" Margin="38,325,0,0" VerticalAlignment="Top" Width="168" Value="70"/> 
//initial-Value = 70, which is ALWAYS showing when using getQuality() in an other Class

按照我的逻辑class我想这样使用它:

int quality = Settings::getQuality();

快速回答:将滑块的值保存在 public 静态 属性 中,最好保存在单独的 class.

推荐答案: 您应该在您的应用程序中使用 MVVM 结构,这样您就有一个单独的层来存储您的设置数据。您可以将滑块的值保存在单例服务中,最好通过 IoC 容器注入。您可能还想将其保存在本地存储中,以便在用户关闭应用程序时保存设置。

MVVM 确实是基于 XAML 的应用程序的标准,这个概念不难学习和实现。

听起来您正在寻找一种方法来存储和检索您的应用程序的设置数据。 UWP 中内置了这些功能。请参考 Windows 开发中心的 this article。该页面上的示例适用于 C#,但指向 UWP API 参考的所有链接也包含适用于 C++ 的代码片段。