搭建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,写文的时候刚发现,会在近期修复(已修复)。

7.源码地址https://gitee.com/akwkevin/aistudio.-wpf.-aclient

posted @   竹天笑  阅读(636)  评论(0编辑  收藏  举报
编辑推荐:
· .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技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示