C# WPF中的x:thing用于什么?
我看了很多,不知道这是什么意思。我想说它与名称空间有关?我已经在谷歌上搜索过了,但我不清楚它的目的是什么 有人能解释一下它是什么,在什么情况下通常使用它吗 谢谢 编辑:C# WPF中的x:thing用于什么?,c#,wpf,xaml,xname,C#,Wpf,Xaml,Xname,我看了很多,不知道这是什么意思。我想说它与名称空间有关?我已经在谷歌上搜索过了,但我不清楚它的目的是什么 有人能解释一下它是什么,在什么情况下通常使用它吗 谢谢 编辑: <Window x:Class="WpfApplication8.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.c
<Window x:Class="WpfApplication8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
</Grid>
</Window>
但是,例如,在上面的代码中,我在第三行将x
定义为XAML名称空间的别名,尽管我在第一行代码中使用了相同的x
。这是怎么发生的?它不在乎事物出现的顺序
edit2:
如果我错了,请纠正我:
窗口x:Class=“WpfApplication8.MainWindow”
上面的代码将把从Window派生的类放在x:WpfApplication8.MainWindow命名空间中,而
窗口x:Name=“abc”
将在x命名空间中放置名为abc的窗口类的实例。是这样吗
如果我是对的,如果我没有使用
x
别名,那么类(第一种情况)和实例(第二种情况)都放在哪里呢?哪里都没有,有点像一个平凡的人?它们已被使用,但未定义它们所在的位置?没错,这是一个XML名称空间别名。如果查看xaml文件的顶部,您会发现它映射到http://schemas.microsoft.com/winfx/2006/xaml
名称空间。稍后使用前缀允许xaml解析器定位在该名称空间中定义的类,而无需键入整个内容。它与使用alias=very.long.namespace的没有什么不同语法
通常需要为要在xaml文件中使用的每个命名空间设置不同的别名。使用时常见的一种方法是将cal
映射到clr命名空间:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation
;然后,您可以使用cal:RegionManager
访问在该CLR命名空间中定义的RegionManager
类。使用Expression Blend时,您经常会发现它添加了xmlns:d=”http://schemas.microsoft.com/expression/blend/2008“
和xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006“
以允许它的一些设计时功能(为artboard上的用户控件设置宽度和高度)
对问题编辑的回答:您可能想看一看,xaml从中继承了此功能。在您的示例中,您需要停止将这些行看作是单独的指令,因为它们将在过程代码中,而不是将元素作为一个整体来考虑。我想说的是,因为xmlns:x
出现在窗口
元素中,该元素及其包含的每个子元素都可以访问它,所以它出现的实际行并不重要,因为xaml不像过程代码那样从上到下执行
对问题编辑2的回答:告诉编译器从xaml文件生成的部分类的名称应该是什么(如果这就是您所说的“将放置从窗口派生的类…”,那么您是正确的)
在第二部分中,将告诉编译器在类中生成一个字段,该字段包含对属性所附加到的元素的引用。这意味着,在您的示例中,代码隐藏文件将能够使用this.abc
引用xaml标记中定义的窗口元素。它是名称空间定义别名
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml“
它的作用非常类似于使用
/import
语句的速记或
通过在标签属性alax:Name
中定义名称空间,可以保证在正确的空间中使用正确的属性
您可能已经注意到,当您希望使用自定义WPF控件时,必须添加自己的程序集命名空间别名 谢谢。但我还是不完全明白。我已经编辑了我的原始帖子。我已经更新了我的答案以回应你的编辑,我希望它能有所帮助。再次更新。我认为您应该看看XAML概念的介绍。