理解XAML命名空间
断断续续的做了几个月WPF项目,为了不熊瞎子掰苞米,今天先通过两个小例子理解XAML的命名空间。
一、在 XAML 中导入第三方命名空间
1)首先不要忘了在 DemoApplication 项目中,添加对 SamplesLib 项目的项目引用。
2)然后在 XAML 视图中插入 xmlns:dc="clr-namespace:SamplesLib"
3)添加自定义控件DemoControl
- <Window x:Class="DemoApplication.Window1"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:dc="clr-namespace:SamplesLib"
- Title="Window1" Height="300" Width="300">
- <Grid>
- <dc:DemoControl />
- </Grid>
- </Window>
二、继承自定义窗体
1)在解决方案中建立自定义控件项目MyWindow,BaseWindow继承Window,具体怎么写就不说了,你可以自己定义外边框,最小化、最大化以及关闭按钮等。
2)添加对 MyWindow项目的项目引用。
3)在 XAML 视图中插入 xmlns:src="clr-namespace:MyWindow",并将Window替换成src:BaseWindow
2)将code behind文件中 public partial class Window1 : Window 修改成:public partial class Window1 : BaseWindow
- <src:BaseWindow x:Class="InheritWindowDemo.Window1"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:src="clr-namespace:MyWindow"
- Height="300"
- Width="300">
- <Grid>
- </Grid>
- </src:BaseWindow>
总结:把 http://schemas.microsoft.com/winfx/2006/xaml/presentatio 作为默认(主要)命名空间,把 http://schemas.microsoft.com/winfx/2006/xaml 作为次要命名空间,次要命名空间的前缀是x,这仅仅是一个规则,就像C#文件要以using System; 指令开始一样。从代码可读性来讲,在使用这些常见的命名空间的时候不需要前缀(即原始的XML命名空间),其他一些命名空间则使用一个短前缀,这样做是有道理的。