我的世界封面制作网站,邢台网站建设哪家好,泰安东平县建设局网站,asp.net网站开发代码文章目录 前言其它项目的UserControl切换TableControl添加按钮#xff0c;隐去TableItem的Header 结论 前言
我想用WPF简单实现一个按钮视图切换的效果#xff0c;但是我发现别人的实现效果非常的麻烦。 其它项目的UserControl切换
我网上找了个开源的项目#xff0c;他是… 文章目录 前言其它项目的UserControl切换TableControl添加按钮隐去TableItem的Header 结论 前言
我想用WPF简单实现一个按钮视图切换的效果但是我发现别人的实现效果非常的麻烦。 其它项目的UserControl切换
我网上找了个开源的项目他是通过实例化加载的方式来实现视图层的切换的。 https://github.com/AFei19911012/HandyControlDemo //视图切换触发函数
private void ListBoxDemo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{if (VM.SelectedIndex 0){return;};//通过清除和重新加载的方式实例化UserControlmainContent.Children.Clear();string name (ListBoxDemo.SelectedItem as DemoDataModel).Name;//判断是否存在文件if (Helper.AssemblyHelper.CreateInternalInstance($UserControl.{name}) is System.Windows.Controls.UserControl ctrl){//实例化加载视图将View和ViewModel统一加载mainContent.Children.Add(ctrl);Edit_Xaml.Load($../HandyControlDemo/UserControl/{name}.xaml);Edit_XamlCs.Load($../HandyControlDemo/UserControl/{name}.xaml.cs);string filename $../HandyControlDemo/ViewModel/{name}ViewModel.cs;if (File.Exists(filename)){Edit_VM.Load(filename);}}
}我个人评价是非常的麻烦而且没有实际的显示代码你必须跑起来才能知道真正的代码是怎么跑的。我就想了个简单的代码切换
TableControl
我们知道使用TableControl可以快速切换
TabControl x:NameMyTableTabItem HeaderViewAView:ViewA //TabItemTabItem HeaderViewBView:ViewB //TabItemTabItem HeaderViewCView:ViewC //TabItem
/TabControl添加按钮隐去TableItem的Header WPF TabControl 隐藏标头 xaml GridGrid.ColumnDefinitionsColumnDefinition Width100 /ColumnDefinition //Grid.ColumnDefinitionsStackPanel!--添加对应View的跳转逻辑--Button ContentAClickButton_Click_1 /Button ContentBClickButton_Click_2 /Button ContentCClickButton_Click_3 //StackPanelTabControl Grid.Column1x:NameMyTable!--通过设置Collapsed来完全折叠TabItem--TabItem VisibilityCollapsedView:ViewA //TabItemTabItem VisibilityCollapsedView:ViewB //TabItemTabItem VisibilityCollapsedView:ViewC //TabItem/TabControl/Grid添加对应的按钮进行切换 private void Button_Click_1(object sender, RoutedEventArgs e){//动态修改SelectedIndex来设置显示的IndexMyTable.SelectedIndex 0;}private void Button_Click_2(object sender, RoutedEventArgs e){MyTable.SelectedIndex 1;}private void Button_Click_3(object sender, RoutedEventArgs e){MyTable.SelectedIndex 2;}结论
重新实例化TableItem难度难我目前也不知道怎么实现简单速度感觉一样快感觉一样快开销重新实例化开销低毕竟直接把空间释放了开销应该大一些但是现在的硬件没这么弱除非你要上动画那可能开销大点。而且我觉得也可以通过实例化的方法进行优化使用重新实例化每次都要重新进入页面每次切换页面原来的页面的数据都会保留其实更符合页面逻辑