UWP - 从 TabView 类保存选项卡 源代码 - NavigationView 事件处理程序

如何解决UWP - 从 TabView 类保存选项卡 源代码 - NavigationView 事件处理程序

如何在 UWP 应用程序关闭时保存最终用户创建的数据(选项卡)以重新打开选项卡。


代码 - NavigationView 事件处理程序

using Windows.UI.Xaml.Controls;

namespace Network
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>

    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();


        }

        private void NavigationView_OnSelectionChanged(NavigationView sender,NavigationViewSelectionChangedEventArgs args)
        {
            if (args.SelectedItemContainer.Tag.Equals("Users"))
            {
                Frame.Navigate(typeof(Interface));

            }

            if (args.SelectedItemContainer.Tag.Equals("Interception"))
            {
                Frame.Navigate(typeof(Network));
            }
        }


    }
}

解决方法

如何在 UWP 应用程序关闭时保存最终用户创建的数据(选项卡)以重新打开选项卡。

当然,您可以将 Tabs 数据保存为 json 字符串,然后在应用程序关闭期间存储在本地文件夹中。当您重新打开应用程序时,您可以将 json 字符串反序列化为选项卡的数据。

例如

public MainPage()
{
    this.InitializeComponent();

    App.Current.Suspending += Current_Suspending;
}
private ObservableCollection<TabData> Tabs;
private void Current_Suspending(object sender,Windows.ApplicationModel.SuspendingEventArgs e)
{
    if (Tabs.Count > 0)
    {
        var json = JsonConvert.SerializeObject(Tabs);
        ApplicationData.Current.LocalSettings.Values["TabsData"] = json;
    }

}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    var json = ApplicationData.Current.LocalSettings.Values["TabsData"] as string;
    if (json != null)
    {
        Tabs = JsonConvert.DeserializeObject<ObservableCollection<TabData>>(json);

    }
    else
    {
        Tabs = new ObservableCollection<TabData>();
        Tabs.Add(new TabData( "page1",Type.GetType( "App19.TestPage")));          
    }
}


private void TabView_Loaded(object sender,RoutedEventArgs e)
{
    (sender as TabView).TabItemsSource = Tabs;

}

private void TabView_AddButtonClick(TabView sender,object args)
{
    Tabs.Add(new TabData("newPage",typeof(TestPage)));
}

private void TabView_TabCloseRequested(TabView sender,TabViewTabCloseRequestedEventArgs args)
{
    Tabs.Remove(args.Item as TabData);

}

标签类

public class TabData
{
    public TabData(string header,Type frameType)
    {
        Header = header;
        FrameType = frameType;
    }
    public string Header { get; set; }
    public Type FrameType { get; set; }
}

Xaml

<muxc:TabView
    AddTabButtonClick="TabView_AddButtonClick"
    Loaded="TabView_Loaded"
    TabCloseRequested="TabView_TabCloseRequested">
    <muxc:TabView.TabItemTemplate>
        <DataTemplate>
            <muxc:TabViewItem Header="{Binding Header}" >
                <muxc:TabViewItem.IconSource>
                    <muxc:SymbolIconSource Symbol="Document"/>
                </muxc:TabViewItem.IconSource>
                <Frame SourcePageType="{Binding FrameType}" />
            </muxc:TabViewItem>
        </DataTemplate>
    </muxc:TabView.TabItemTemplate>
</muxc:TabView>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?