WPF中的x:是什么用的?

dev*_*ium 4 c# wpf xaml xname

我已经看过很多了,我不知道这意味着什么.我会说它与名称空间有关吗?我已经用谷歌搜索了它,但我不清楚它的目的是什么.

任何人都可以解释它是什么以及它通常在哪种情况下使用?

谢谢

编辑:

<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>
Run Code Online (Sandbox Code Playgroud)

但是,例如,在上面的代码中,我x在第三行定义为XAML命名空间的别名,尽管我x在第一行代码中使用了相同的权限.这是怎么发生的?它不关心事物出现的顺序?

edit2: 如果我错了,请纠正我:

窗口x:Class ="WpfApplication8.MainWindow"

上面的代码将把一个派生自Window的类放在x:WpfApplication8.MainWindow命名空间中

窗口x:名称="abc"

将在x命名空间中放入一个名为abc的Window类的实例.是对的吗?

如果我是对的,如果我没有使用x别名,那么将放入类(第一种情况)和实例(第二种)情况?无处,有点像无数类型?它们被使用但它们所在的地方没有定义?

Ror*_*ory 11

你是对的,它是一个XML命名空间别名.如果您查看xaml文件的顶部,您会发现它映射到http://schemas.microsoft.com/winfx/2006/xaml命名空间.稍后使用前缀允许xaml解析器找到在该命名空间中定义的类,而无需键入整个内容.它与using alias = very.long.namespace;C#中的语法没有什么不同.

您通常需要为要在xaml文件中使用的每个命名空间设置不同的别名.使用PRISM时常见的是映射calclr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation; 然后,您可以使用,访问该RegionManagerCLR命名空间中定义的类cal:RegionManager.使用Expression Blend时,您经常会发现它会添加xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"允许其部分设计时功能(在画板上设置用户控件的宽度和高度).


对问题编辑的回复:您可能希望查看XML命名空间教程,xaml从该教程继承此功能.在您的示例中,您需要停止将行视为单个指令,就像它们在过程代码中一样,而是将元素视为一个整体.我想说的是,因为xmlns:x出现在Window元素中,它可以访问该元素及其包含的每个子元素,它出现的实际行并不重要,因为xaml不是从上到下执行的,就像过程代码一样.


对问题编辑2:X:类属性告诉编译器从XAML文件生成的部分类的名称应该是什么(如果这是你的意思"将会把从窗口派生的类...",然后你是对的).

在第二部分中,x:Name属性告诉编译器在类中生成一个字段,该字段包含对该属性所附加的元素的引用.这意味着,在您的示例中,您的代码隐藏文件将能够this.abc用于引用xaml标记中定义的Window元素.