ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

搭建Wpf框架(7) —— 我的控制台(续6)

2021-05-04 21:33:34  阅读:204  来源: 互联网

标签:control 控件 return fullname context Wpf null 控制台 搭建


1.把多个页面放在一个页面上,定制成我的控制台。

2.选用了TilePanel和MaximizedTile两种布局,并且可切换。

3效果图如下:

 

 

 

 2.上面的内容控件都是系统原有的,使用Prism加载到DockManage中,在保留原有系统基本不动的情况下,将其可以加入到布局控件中。

3.Xaml代码如下,使用一个内容控件来包含原有的控件。

           <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部分动态生成内容控件

 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

标签:control,控件,return,fullname,context,Wpf,null,控制台,搭建
来源: https://www.cnblogs.com/akwkevin/p/14730309.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有