Shell框架XECA

shell.xaml主要起到是一个容器或壳的作用

<Window x:Class="XECA.Shell"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       
        xmlns:inf="clr-namespace:MyGlobal.Infrustructure;assembly=MyGlobal.Infrustructure"
        xmlns:prism="http://prismlibrary.com/"
        xmlns:Controls="clr-namespace:MyGlobal.Infrustructure.Controls;assembly=MyGlobal.Infrustructure"
        Title="工作平台" Height="300" Width="300" Background="{StaticResource myGraybrush}">
 
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Border Margin="5" Grid.Row="1" CornerRadius="5,5,5,5" BorderBrush="Black" BorderThickness="1">
            <Grid  Width="auto" Margin="5">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="0.15*"></ColumnDefinition>
                    <ColumnDefinition Width="0.85*"></ColumnDefinition>
                </Grid.ColumnDefinitions>

<!--<Controls:RoundedBox Margin="10" />-->
                <Border Grid.Column="0" CornerRadius="10"  Background="{StaticResource myGraybrush}" BorderBrush="#193441" BorderThickness="1" Margin="3" Padding="1">
                    <ItemsControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.MenuRegion }"/>
                </Border>

<Border Grid.Column="1" CornerRadius="10" Background="#FCFFf5" BorderBrush="#193441" BorderThickness="0" Margin="1" Padding="0">
                    <Grid x:Name="ContentGrid"   Grid.Row="1" RenderTransformOrigin="0.5,0.5">
                        <Grid.RenderTransform>
                            <TransformGroup>
                                <ScaleTransform/>
                                <SkewTransform/>
                                <RotateTransform/>
                                <TranslateTransform/>
                            </TransformGroup>
                        </Grid.RenderTransform>
                        <Border BorderThickness="1" Width="auto" Height="auto" CornerRadius="10,10,10,10" BorderBrush="Black" >
                            <Controls:AnimatedTabControl
                                        x:Name="TabName"
                                        SelectedIndex="0" 
                                        VerticalAlignment="Stretch"
                                        ItemContainerStyle="{StaticResource ShellTabItemStyle}"
                                        Background="{StaticResource headerBarBG}"
                                        prism:RegionManager.RegionName="{x:Static inf:RegionNames.MCWrapRegion}"
                                        AutomationProperties.AutomationId="TabId" />
                        </Border>
                    </Grid>
                </Border>

</Grid>

</Border>
        <StackPanel Orientation="Horizontal">
            <Label HorizontalAlignment="Left" Margin="10,0,0,0" Width="Auto" Content="U-Project" FontWeight="Bold" Foreground="#fff" FontSize="24" FontFamily="Corbel"/>
          
        </StackPanel>
    </Grid>

</Window>

这里涉及两个关键技术点,一个是style的全局共享,另一个是采用AnimatedTabControl控件

App.config删除起始访问设置

<Application x:Class="XECA.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:XECA">  
</Application>

Bootstrap.cs代码

using Prism.Unity;
using System.Windows;
using Microsoft.Practices.Unity;
using Prism.Modularity;
 
using XECA.Views;
using Prism.Mef;
using System.ComponentModel.Composition.Hosting;
using MyGlobal.Infrustructure.Behaviors;
using System;
using MyGlobal.Infrustructure;
using Prism.Logging;
using EntityFW;
using TestTabItems;

namespace XECA
{
     [CLSCompliant(false)]
    public partial class Bootstrapper : MefBootstrapper//采用MefBootstrapper
    {

//程序运行日志管理
        private readonly EnterpriseLibraryLoggerAdapter _logger = new EnterpriseLibraryLoggerAdapter();

protected override ILoggerFacade CreateLogger()
        {
            return _logger;
        }
        protected override void ConfigureAggregateCatalog()
        {
            base.ConfigureAggregateCatalog();
            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Bootstrapper).Assembly));
            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(RICommands).Assembly));
           
           
            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(EntityFWModule).Assembly));
            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(TabTestModule).Assembly));
            //业务模块采用目录catlog加载方式,即后续业务模块开发完成,将DLL扔到目录下即可

this.AggregateCatalog.Catalogs.Add(new DirectoryCatalog("../../Modules"));
        }

protected override void ConfigureContainer()
        {
            base.ConfigureContainer();
        }

protected override void InitializeShell()
        {
            base.InitializeShell();

Application.Current.MainWindow = (Window)this.Shell;
            Application.Current.MainWindow.Show();
        }

protected override Prism.Regions.IRegionBehaviorFactory ConfigureDefaultRegionBehaviors()
        {
            var factory = base.ConfigureDefaultRegionBehaviors();

factory.AddIfMissing("AutoPopulateExportedViewsBehavior", typeof(AutoPopulateExportedViewsBehavior));

return factory;
        }

protected override DependencyObject CreateShell()
        {
            DependencyObject x= this.Container.GetExportedValue<Shell>();
            return x;
        }
    }
}

Prism&MEF构建开发框架 (一)的更多相关文章

  1. Prism&MEF构建开发框架 (三)

    菜单管控模块EntityFW 菜单的加载采用MEF技术,程序实现思路: 1 .主菜单加载页面MainMenuView.xaml指向MenuRegion 2. 菜单Item点击及内容加载,采用订阅模式, ...

  2. Prism&MEF构建开发框架

    系统框架构想效果图 平台简单由左侧菜单和右侧内容区以及顶部系统和用户信息区构成 菜单根据系统模块动态加载 右侧,根据左侧选中菜单动态加载子模块,子模块集合以tab选项卡方式布局 系统模块划分为Shel ...

  3. 一步步实现 Prism + MEF(一)--- 搭建框架

    第一步:构建一个名为Bootstrapper的类作为引导程序. class Bootstrapper : MefBootstrapper { } 第二步:在MainWindow窗体中添加一个Coont ...

  4. UWP应用程序使用Prism框架构建MVVM

    在我们创建的UWP解决方案中选择引用->管理NuGet包程序包 NuGet管理包 2. 搜索Prism.Core,并安装 搜索Prism.Core 3. 搜索Prism.Unity,并安装 搜索 ...

  5. Prism MEF example

    Related Attributes These attributes are under namespace System.ComponentModel.Composition Import The ...

  6. 一步步实现 Prism + MEF(二)--- 绑定命令

    Prism程序集为我们提供了DelegateCommand命令,使用该命令可实现窗口直接绑定.第一步:在ViewModel中定义一个DelegateCommand属性. public Delegate ...

  7. 【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)

    编译并运行快速入门 需要在VisualStudio 2010上运行此快速入门示例 代码下载:ModularityWithMef.zip 先重新生成解决方案 再按F5运行此示例 说明: 在此快速入门示例 ...

  8. Prism for WPF初探(构建简单的模块化开发框架)

    先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to help you more easily design and build, flexibl ...

  9. 【MEF】构建一个WPF版的ERP系统

    原文:[MEF]构建一个WPF版的ERP系统 引言 MEF是微软的一个扩展性框架,遵循某种约定将各个部件组合起来.而ERP系统的一大特点是模块化,它们两者的相性很好,用MEF构建一个ERP系统是相当合 ...

随机推荐

  1. Xamarin.Android编译CPU类型选择方式

    Xamarin.Android编译CPU类型选择方式 在Xamarin.Android编译的时候,默认提供了5种CPU类型供大家选择.它们分别为armeabi.armeabi-v7a.arm64-v8 ...

  2. spring实战二之Bean的自动装配(非注解方式)

    Bean的自动装配 自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bea ...

  3. 枚举 POJ 2965 The Pilots Brothers' refrigerator

    题目地址:http://poj.org/problem?id=2965 /* 题意:4*4的矩形,改变任意点,把所有'+'变成'-',,每一次同行同列的都会反转,求最小步数,并打印方案 DFS:把'+ ...

  4. LightOJ1068 Investigation(数位DP)

    这题要求区间有多少个模K且各位数之和模K都等于0的数字. 注意到[1,231]这些数最大的各位数之和不会超过90左右,而如果K大于90那么模K的结果肯定不是0,因此K大于90就没有解. 考虑到数据规模 ...

  5. 如何:从代码创建 UML 类图(ZZ)

      您拖动的一个或多个类将显示在关系图上. 它们依赖的类将显示在"UML 模型资源管理器"中. 参见 模型表示类型的方式. 将程序代码中的类添加到 UML 模型 打开一个 C# 项 ...

  6. HDU 5087 (线性DP+次大LIS)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5087 题目大意:求次大LIS的长度.注意两个长度相同的LIS大小比较,下标和大的LIS较大. 解题思 ...

  7. TYVJ P1002 谁拿了最多奖学金 Label:模拟 水

    背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同:1)     院士奖学金,每人8000元,期末平均成绩高于80分( ...

  8. 微信企业号办公系统-JSSDK上传图片(多图上传)

    在开发微信企业号办公系统中,涉及到了图片上传功能,一开始使用的flash插件上传方法,在苹果手机上可以调用相机直接拍摄照片,但在安卓手机上只能选择照片. 微信jssdk-api带有一套完整的调用选择本 ...

  9. java.lang.String 类的所有方法

    java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...

  10. linux的信号机制

    软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.进程之间可以互相通过系统调用kill发送软中断信号.内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件.注意,信号只是用 ...