Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中的x:thing用于什么?_C#_Wpf_Xaml_Xname - Fatal编程技术网

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
语句的速记或

通过在标签属性ala
x:Name
中定义名称空间,可以保证在正确的空间中使用正确的属性


您可能已经注意到,当您希望使用自定义WPF控件时,必须添加自己的程序集命名空间别名

谢谢。但我还是不完全明白。我已经编辑了我的原始帖子。我已经更新了我的答案以回应你的编辑,我希望它能有所帮助。再次更新。我认为您应该看看XAML概念的介绍。