搭建Wpf框架(7) —— 我的控制台(续6)
AIStudio框架汇总及介绍
1.把多个页面放在一个页面上,定制成我的控制台。
2.选用了TilePanel和MaximizedTile两种布局,并且可切换。
3效果图如下:
2.上面的内容控件都是系统原有的,使用Prism加载到DockManage中,在保留原有系统基本不动的情况下,将其可以加入到布局控件中。
3.Xaml代码如下,使用一个内容控件来包含原有的控件。
1 2 3 4 5 | <DataTemplate DataType= "{x:Type local:UserItemData}" > <ContentControl Content= "{Binding Content}" /> </DataTemplate> <utilpanel:ResizableItemsControl ItemsSource= "{Binding UserConsoleData.Data}" AllowDrop= "True" BindingWidthAndHeight= "True" RowNum= "{Binding UserConsoleData.RowNum,Mode=OneWay}" ColumnNum= "{Binding UserConsoleData.ColumnNum,Mode=OneWay}" ShowTitle= "True" PanelType= "{Binding UserConsoleData.PanelType,Mode=OneWay}" Grid.Row= "1" /> |
4.Cs部分动态生成内容控件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | private Control InitControl( string fullname) { if (!SearchMenus.Any(p => p.WpfCode == fullname)) { PromptUserControl txt = new PromptUserControl( "您没有该菜单的权限" ); return txt; } var assemblies = System.AppDomain.CurrentDomain.GetAssemblies().Where(p => p.FullName.StartsWith( "AIStudio.Wpf" )).ToList(); foreach ( var assembly in assemblies) { Type type = assembly.GetType(fullname); if (type != null ) { var control = Activator.CreateInstance(type) as UserControl; ViewModelLocator.SetAutoWireViewModel(control, true ); if (control.DataContext is NavigationDockWindowViewModel) { NavigationContext context = new NavigationContext( null , null ); context.Parameters.Add( "Identifier" , Identifier); (control.DataContext as NavigationDockWindowViewModel).OnNavigatedTo(context); } return control; } } return null ; } |
其中:根据名称生成View,然后使用ViewModelLocator.SetAutoWireViewModel(control, true);可以自动生成ViewModel。
5.别的还剩下序列化与反序列化,
6.还有少量bug,写文的时候刚发现,会在近期修复(已修复)。
分类:
Wpf / Wpf-Client
标签:
Wpf Client
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类