zoukankan      html  css  js  c++  java
  • 搭建Wpf框架(7) —— 我的控制台(续6)

    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

    作者:竹天笑
    互相学习,提高自己。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    [转]Magento刷新索引的几种方法
    [转]centos7 移动mysql5.7.19 数据存储位置
    [转]解决Magento批量导入带图片的商品的问题
    [转]【mysql监控】查看mysql库大小,表大小,索引大小
    [转]Centos系统中查看文件和文件夹大小
    [转]Magento 2.2 Developer Documentation
    [转]Magento2开发教程
    [转]Magento Configurable Product
    [转]论magento1和magento2的速度性能优化问题
    [转]本地 Windows 计算机密码登录 登录 腾讯云 Linux 实例
  • 原文地址:https://www.cnblogs.com/akwkevin/p/14730309.html
Copyright © 2011-2022 走看看