• WPF 跨程序集引用UserControl


    在项目的开发过程中,有是有会把一些用户自定义的元素单独放在一个程序集下面(我没这么做过),这样在另一个程序集中引用这些元素是就容易出一些问题,不过这也很简单就可以解决.

    项目文件图:

    HH9GN0YPAHSJ0(]A29F3K72

    ReferenceUserControl是的主窗体工程,此工程中有一个主窗体和一个用户自定义的元素UserControl1(背景色为绿色)

    MyControl是专门存放用户自定义元素的工程,里面有两个相同的UserControl1元素,不过所在的namespace不同,这两个UserControl1中也没写什么代码,,就改变了一下Grid的背景色,,在最外层这个UserControl1背景色为红色,在TWO文件下面的UserControl1背景色为蓝色

    1.引用本程序集中的Element

    下面是Window1中的XAML代码

    <Window x:Class="ReferenceUserControl.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            
        xmlns:src="clr-namespace:ReferenceUserControl"
            
        Title="Window1">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <src:UserControl1/>
        </Grid>
    </Window>
    

    结果:

    CBG~WQU4K%CZNMFY}(M49[K

    程序执行成功,接下来马上测试另外两个UserControl1

     

    2.测试在MyControl根目录下的那个UserControl,背景色为红色,在项目上添加对MyControl的引用以后,简单的吧原来的命名空间ReferenceUserControl替换为MyControl后,运行出错,如图:

    代码:

    <Window x:Class="ReferenceUserControl.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            
        xmlns:src="clr-namespace:MyControl"
            
        Title="Window1" SizeToContent="WidthAndHeight">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <src:UserControl1/>
        </Grid>
    </Window>

    CP~FRRV@%G6}{Y7_`3_S6IW


    第一条错误时最主要的错误,提示说命名空间没有找到,在这个Uri命名空间中不包含这个MyControl程序集,一般来说,完整的命名空间应该是这样:

    xmlns:src="clr-namespace:ReferenceUserControl;assembly=ReferenceUserControl"
    有时候是在同一个程序集下面对自身的引用,所以可以省略后面assembly的部分,但是当引用的是其他程序集的Element时,
    这一部分是不可以省略的,需要附带程序集的信息.
    这样,简单吧上面的引用部分变为:
        xmlns:src="clr-namespace:MyControl;assembly=MyControl"
    这样上面的代码就可以正常运行,显示的窗体为红色

    }F(}C{4HCD8WQ2K2ZAY12AW

     
     
    3.现在再引用MyControl下面Two文件下面的Element就简单了(蓝色背景)
     
    <Window x:Class="ReferenceUserControl.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            
        xmlns:src="clr-namespace:MyControl.One.Two;assembly=MyControl"
            
        Title="Window1" SizeToContent="WidthAndHeight">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <src:UserControl1/>
        </Grid>
    </Window>
    注意:assembly为MyControl
    结果:蓝色的窗体

    XA937BQ2L4K}$]82_GD8PE9

  • 相关阅读:
    ubuntu 11.04 Gnome 恢复默认的任务栏面板
    (转载)学习腾讯的产品管理之道
    (转载)项目管理之外谈项目管理
    windows 下键盘映射
    该留意的文章
    一些常用的工具
    ubuntu 11.04 old sources.list
    一个css3流程导图
    echarts雷达图
    highcharts图表
  • 原文地址:https://www.cnblogs.com/wangshuai/p/1807624.html
Copyright © 2020-2023  润新知