c# - x : thing in WPF serve for? 是什么意思

标签 c# wpf xaml xname

看了很多,不知道是什么意思。我会说它与 namespace 有关吗?我已经用谷歌搜索过了,但我不清楚它的用途是什么。

谁能解释一下它是什么以及通常在哪些情况下使用?

谢谢

编辑:

<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在第一行代码中。这是怎么发生的?它不关心事物出现的顺序?

编辑2: 如果我错了请纠正我:

Window x:Class="WpfApplication8.MainWindow"

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

Window x:Name="abc"

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

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

最佳答案

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

您通常需要为要在 xaml 文件中使用的每个 namespace 设置不同的别名。使用 PRISM 时常见的一个正在将 cal 映射到 clr-namespace: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" 允许它的一些设计时功能(为画板上的用户控件设置宽度和高度)。


对问题编辑的回应:您可能想看一下 XML Namespace tutorial ,这是 xaml 从中继承此功能的地方。在您的示例中,您需要停止将行视为单独的指令,因为它们将在过程代码中,而是将元素视为一个整体。我想说的是,因为 xmlns:x 出现在 Window 元素中,所以该元素及其包含的每个子元素都可以访问它,它的实际行出现在什么地方并不重要,因为 xaml 不像过程代码那样从上到下执行。


对问题编辑 2 的回应: x:Class attribute告诉编译器从 xaml 文件生成的部分类的名称应该是什么(如果这就是您所说的“将放置一个从 Window 派生的类...”的意思,那么您是正确的)。

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

关于c# - x : thing in WPF serve for? 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2278424/

相关文章:

c# - 嵌套导体的屏幕未激活

c# - Windows 8 Metro 风格项目(InkStroke.Add 错误)

c# - 如何以编程方式从 web.config 检索 smtp 服务器详细信息

wpf - 选中菜单项中的黑框复选标记

c# - CSLA数据库功能

c# - 如何以编程方式将 WPF TreeView 绑定(bind)到 List<Drink>?

c# - 如何将 StackPanel 绑定(bind)到非 ObservableCollection?

c# - 在将表单发送到后端之前,如何将密码字符串转换为 Base64 字符串?

c# - MongoDB 序列化 C# - 添加额外的加密字段属性

c# - 更改 WPF TreeView 中按钮的字体粗细