C# UWP-从TabView类保存选项卡
如何保存最终用户创建的数据(选项卡),以便在UWP应用程序关闭时重新打开选项卡C# UWP-从TabView类保存选项卡,c#,xaml,uwp,event-handling,uwp-xaml,C#,Xaml,Uwp,Event Handling,Uwp Xaml,如何保存最终用户创建的数据(选项卡),以便在UWP应用程序关闭时重新打开选项卡 源代码-NavigationView事件处理程序 使用Windows.UI.Xaml.Controls; 名称空间网络 { /// ///可以单独使用或在框架内导航到的空页。 /// 公共密封部分类主页面:第页 { 公共主页() { this.InitializeComponent(); } 私有void NavigationView_OnSelectionChanged(NavigationView发送方,
源代码-NavigationView事件处理程序
使用Windows.UI.Xaml.Controls;
名称空间网络
{
///
///可以单独使用或在框架内导航到的空页。
///
公共密封部分类主页面:第页
{
公共主页()
{
this.InitializeComponent();
}
私有void NavigationView_OnSelectionChanged(NavigationView发送方,
NavigationViewSelectionChangedEventArgs(参数)
{
if(args.SelectedItemContainer.Tag.Equals(“用户”))
{
框架导航(类型(接口));
}
if(args.SelectedItemContainer.Tag.Equals(“拦截”))
{
帧导航(类型(网络));
}
}
}
}
如何保存最终用户创建的数据(选项卡),以便在UWP应用程序关闭时重新打开选项卡
当然,您可以将选项卡数据保存为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);
}
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>
以下各项是否解决了您的问题?此线程有任何更新吗?
public class TabData
{
public TabData(string header, Type frameType)
{
Header = header;
FrameType = frameType;
}
public string Header { get; set; }
public Type FrameType { get; set; }
}
<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>