UWP - 从另一个页面获取Slidervalue

时间:2017-05-30 11:51:23

标签: xaml uwp c++-cx

我有2个页面:我的主页面和我的设置页面 - 在XAML和xaml.cpp中都是代码。我还有一个课程,我想使用Settings-Class的值。 (正如我在另一篇文章中已经提到的那样)我可以使用XAML-tag NavigationCacheMode="Enabled"从缓存中的Settings-Page中保存值。即使我切换到主页面并再次返回到设置页面,我的SliderValue也保持不变。

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

我到目前为止所做的事情(无法正常工作,始终显示初始值' 70' ):

Settings.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

在我的逻辑类中,我想像这样使用它:

int quality = Settings::getQuality();

2 个答案:

答案 0 :(得分:0)

快速回答:将滑块的值保存在公共静态属性中,理想情况是在单独的类中。

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

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

答案 1 :(得分:0)

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