如何处理自定义应用程序设置?Windows 10 UWP C#

ArdaZeytin

我正在开发基于Webview的应用程序。Webview是我的应用程序的核心,位于主页上。我想让用户能够自定义应用程序。例如:我在主页上有splitview。splitview的默认显示模式是compactoverlay,如果用户设备是电话,它将自动更改为叠加。我想为用户更改此可选项。我为此做了一些工作,但是效率不高。谁能告诉我该如何处理我的应用程序设置?

public sealed partial class MainPage : Page
{
    public MainPage()
    {

        this.InitializeComponent();
        SettingsReader();
        ApplyUserSettings();
        NavigationCacheMode = NavigationCacheMode.Enabled;

        SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
        SystemNavigationManager.GetForCurrentView().BackRequested += (s, a) =>
        {


            if (webView.CanGoBack)
            {
                webView.GoBack();
                a.Handled = true;
            }

            SettingsReader();
            ApplyUserSettings();
        };
    }



    private async void SettingsReader()
    {
        try
        {
            await ReadFileSwitchSplitDisplayMode();
        }
        catch (Exception)
        {

        }

    }

    private void ApplyUserSettings()
    {
        if (tbxSwitchSplitDisplayMode.Text == "1")
        {

            ShellSplitView.DisplayMode = SplitViewDisplayMode.Overlay;
            mainpageAppBarGrid.Margin = new Thickness(48, 0, 0, 0);
        }
        else ShellSplitView.DisplayMode = SplitViewDisplayMode.CompactOverlay;
    }

设定页面

public sealed partial class Settings : Page
{

    public Settings()
    {
        InitializeComponent();
        //NavigationCacheMode = NavigationCacheMode.Enabled;
        SettingsReader();
        tglSwitchSplitDisplayModeCheck();

    }

    private async void SettingsReader()
    {
        try
        {
            await ReadFileSwitchSplitDisplayMode();
        }
        catch (Exception)
        {


        }

    }



    private async void btnKaydet_Click(object sender, RoutedEventArgs e)
    {
        await WriteToFile();
        await WriteToFileSwitchSplitDisplayMode();

        //Show Success Message
        var dlg = new MessageDialog("Kaydedilen ayarların tamamının uygulanması için uygulamanın sizin tarafınızdan yeniden başlatılması gerekiyor. Şimdi kapatılsın mı ?","Ayarlar Kaydedildi!");
        dlg.Commands.Add(new UICommand("Evet", null, "YES"));
        dlg.Commands.Add(new UICommand("Hayır", null, "NO"));
        var op = await dlg.ShowAsync();
        if ((string)op.Id == "YES")
        {
            App.Current.Exit();
        }
    }






        }

    }



    private void tglSwitchSplitDisplayModeCheck()
    {
        if (tbxSwitchSplitDisplayMode.Text == "1")
        {
            tglSwitchSplitDisplayMode.IsOn = true;
        }
        else
            tglSwitchSplitDisplayMode.IsOn = false;
    }

    public async Task WriteToFileSwitchSplitDisplayMode()
    {
        // Get the text data from the textbox
        byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(tbxSwitchSplitDisplayMode.Text.ToCharArray());

        //Get the local folder
        StorageFolder local = ApplicationData.Current.LocalFolder;

        //Create new folder name DataFolder
        var dataFolder = await local.CreateFolderAsync("Data Folder", CreationCollisionOption.OpenIfExists);

        //Create txt file
        var file = await dataFolder.CreateFileAsync("tglSwitchSplitDisplayMode.txt", CreationCollisionOption.ReplaceExisting);

        //write the data from the text box
        using (var s = await file.OpenStreamForWriteAsync())
        {
            s.Write(fileBytes, 0, fileBytes.Length);
        }

    }

    public async Task ReadFileSwitchSplitDisplayMode()
    {
        // Get the local folder.
        StorageFolder local = ApplicationData.Current.LocalFolder;

        if (local != null)
        {
            // Get the DataFolder folder.
            var dataFolder = await local.GetFolderAsync("Data Folder");

            // Get the file.
            var file = await dataFolder.OpenStreamForReadAsync("tglSwitchSplitDisplayMode.txt");

            // Read the data.
            using (StreamReader streamReader = new StreamReader(file))
            {
                tbxSwitchSplitDisplayMode.Text = streamReader.ReadToEnd();
            }

        }
    }

    private void tglSwitchSplitDisplayMode_Toggled(object sender, RoutedEventArgs e)
    {
        if (tglSwitchSplitDisplayMode.IsOn)
        {
            tbxSwitchSplitDisplayMode.Text = "1";
        }
        else tbxSwitchSplitDisplayMode.Text = "0";
    }
}

在此处输入图片说明结果,它现在仅在用户退出应用并重新启动时才起作用。但是,此技巧不适用于Windows Phone 10。

ArdaZeytin

我做的。

设置页面

private async void tglSwitchSplitDisplayMode_Toggled(object sender, RoutedEventArgs e)
    {

        StorageFolder local = ApplicationData.Current.LocalFolder;
        var dataFolder = await local.CreateFolderAsync("Data Folder", CreationCollisionOption.OpenIfExists);
        var file = await dataFolder.CreateFileAsync("SwitchSplitDisplayMode.txt", CreationCollisionOption.ReplaceExisting);

        if (tglSwitchSplitDisplayMode.IsOn)
        { 
            await FileIO.WriteTextAsync(file,"on");
        }
        else await FileIO.WriteTextAsync(file, "off");


    }

主页

private async void ApplyUserSettings()
    {
        try
        {
            StorageFolder local = ApplicationData.Current.LocalFolder;

            var dataFolder = await local.GetFolderAsync("Data Folder");
            var file = await dataFolder.GetFileAsync("SwitchSplitDisplayMode.txt");
            String SwitchSplitDisplayMode = await FileIO.ReadTextAsync(file);

            if (SwitchSplitDisplayMode == "on")
            {
                ShellSplitView.DisplayMode = SplitViewDisplayMode.Overlay;
                mainpageAppBarGrid.Margin = new Thickness(48, 0, 0, 0);
            }
            else ShellSplitView.DisplayMode = SplitViewDisplayMode.CompactOverlay;
        }
        catch (Exception)
        {

        }

    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Windows 10 C#UWP Universal Windows应用中获取用户名

来自分类Dev

Windows 10 UWP上的应用程序内购买麻烦

来自分类Dev

在Windows 10的UWP(通用Windows应用)中创建自定义形状控件

来自分类Dev

单击按钮后定义图像源Windows 10 UWP,XAML C#

来自分类Dev

如何使Webview作为BackgroundTask C#UWP Windows 10运行

来自分类Dev

自定义Windows 10 UWP后退按钮

来自分类Dev

在UWP Windows 10 C#中创建带有边框的圆形按钮

来自分类Dev

UWP Windows-10无法将Microsoft.NETCore.UniversalWindowsPlatform添加到我的C#应用程序

来自分类Dev

如何使用自定义应用程序替换Windows 10上的登录应用程序

来自分类Dev

通用Windows平台(UWP)C#应用程序-如何在应用程序中运行独立的python

来自分类Dev

在Windows 10 UWP中使用C#添加时,ScrollViewer不适用于ListView

来自分类Dev

从UWP Windows 10应用程序的“最近”文件列表中选择文件时处理跳转列表事件

来自分类Dev

如何将Qt应用程序部署到UWP或Windows 10移动版

来自分类Dev

如何在UWP应用(C#或WinJS)中获取Windows 10版本(例如1809、1903、1909等)?

来自分类Dev

如何在应用程序设置中保存图像或文件流?UWP C#

来自分类Dev

处理后退导航Windows 10(UWP)

来自分类Dev

如何从终端(cmd)启动Windows 10 appx(UWP)应用程序

来自分类Dev

自定义Windows 10 UWP后退按钮

来自分类Dev

我可以从Windows 10(UWP)应用程序中的Web Worker调用自定义运行时组件吗

来自分类Dev

UWP Windows-10:如何在商店应用程序中使用线程本地存储API

来自分类Dev

在Windows 10 UWP中使用C#添加时,ScrollViewer不适用于ListView

来自分类Dev

是否可以将Raspberry Pi 3上的Windows 10 IoT UWP C#应用程序连接到蓝牙耳机?

来自分类Dev

如何将MySQL连接器添加到UWP C#应用程序?

来自分类Dev

Windows 10 IoT上的UWP

来自分类Dev

广告 ID - UWP (Windows 10)

来自分类Dev

如何在 Windows 10 中杀死 UWP 应用程序?

来自分类Dev

UWP C# Windows 10 IoT datepicker & timepicker 更新系统日期和时间

来自分类Dev

如何使用 CoreCursorType.Custom 在 C# UWP 中创建自定义光标?

来自分类Dev

如何在C# UWP应用中实现自定义缓存

Related 相关文章

  1. 1

    在Windows 10 C#UWP Universal Windows应用中获取用户名

  2. 2

    Windows 10 UWP上的应用程序内购买麻烦

  3. 3

    在Windows 10的UWP(通用Windows应用)中创建自定义形状控件

  4. 4

    单击按钮后定义图像源Windows 10 UWP,XAML C#

  5. 5

    如何使Webview作为BackgroundTask C#UWP Windows 10运行

  6. 6

    自定义Windows 10 UWP后退按钮

  7. 7

    在UWP Windows 10 C#中创建带有边框的圆形按钮

  8. 8

    UWP Windows-10无法将Microsoft.NETCore.UniversalWindowsPlatform添加到我的C#应用程序

  9. 9

    如何使用自定义应用程序替换Windows 10上的登录应用程序

  10. 10

    通用Windows平台(UWP)C#应用程序-如何在应用程序中运行独立的python

  11. 11

    在Windows 10 UWP中使用C#添加时,ScrollViewer不适用于ListView

  12. 12

    从UWP Windows 10应用程序的“最近”文件列表中选择文件时处理跳转列表事件

  13. 13

    如何将Qt应用程序部署到UWP或Windows 10移动版

  14. 14

    如何在UWP应用(C#或WinJS)中获取Windows 10版本(例如1809、1903、1909等)?

  15. 15

    如何在应用程序设置中保存图像或文件流?UWP C#

  16. 16

    处理后退导航Windows 10(UWP)

  17. 17

    如何从终端(cmd)启动Windows 10 appx(UWP)应用程序

  18. 18

    自定义Windows 10 UWP后退按钮

  19. 19

    我可以从Windows 10(UWP)应用程序中的Web Worker调用自定义运行时组件吗

  20. 20

    UWP Windows-10:如何在商店应用程序中使用线程本地存储API

  21. 21

    在Windows 10 UWP中使用C#添加时,ScrollViewer不适用于ListView

  22. 22

    是否可以将Raspberry Pi 3上的Windows 10 IoT UWP C#应用程序连接到蓝牙耳机?

  23. 23

    如何将MySQL连接器添加到UWP C#应用程序?

  24. 24

    Windows 10 IoT上的UWP

  25. 25

    广告 ID - UWP (Windows 10)

  26. 26

    如何在 Windows 10 中杀死 UWP 应用程序?

  27. 27

    UWP C# Windows 10 IoT datepicker & timepicker 更新系统日期和时间

  28. 28

    如何使用 CoreCursorType.Custom 在 C# UWP 中创建自定义光标?

  29. 29

    如何在C# UWP应用中实现自定义缓存

热门标签

归档