【问题标题】:Where to find XAML namespace d="http://schemas.microsoft.com/expression/blend/2008" mapping library?在哪里可以找到 XAML 命名空间 d="http://schemas.microsoft.com/expression/blend/2008" 映射库?
【发布时间】:2012-09-03 02:10:18
【问题描述】:

在下面的每个默认 WPF 窗口中,都引用了四个命名空间。 我知道:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

是映射库PresentationCore.dll 和PresentationFramework.dll。但是我在哪里可以找到映射命名空间的库文件

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

?

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow" Height="350" Width="525">
    <Grid>

    </Grid>
</Window>

【问题讨论】:

标签: wpf xaml namespaces mapping xml-namespaces


【解决方案1】:

几乎正确。更多详情请查看 MSDN:http://msdn.microsoft.com/en-us/library/cc189061(v=vs.95).aspx

d: (http://schemas.microsoft.com/expression/blend/2008)

d: XAML 命名空间旨在提供设计器支持,特别是 Microsoft Visual Studio 和 Microsoft Expression Blend 的 XAML 设计图面中的设计器支持。 d: XAML 命名空间在 XAML 元素上启用设计器属性。这些设计器属性仅影响 XAML 行为方式的设计方面。当 XAML 解析器在 Silverlight 运行时加载相同的 XAML 并且应用程序运行时,设计器属性将被忽略。通常,设计器属性在任何 XAML 元素上都有效,但实际上只有某些场景适合自己应用设计器属性。

mc: (http://schemas.openxmlformats.org/markup-compatibility/2006)

mc: 表示并支持用于读取 XAML 的标记兼容模式。通常,d: 前缀与属性mc:Ignorable 相关联。如前所述,此技术使运行时 XAML 解析器能够忽略设计属性。

【讨论】:

  • 文档链接失效。
【解决方案2】:

据我了解,“d”命名空间在您的代码中启用了仅限设计器的属性。这样您就可以将设计时数据等内容添加到您的应用程序并使其可混合。

“mc”命名空间支持兼容性,通常上面提到的“d”前缀与“mc:ignorable”配对,告诉编译器在运行时忽略设计时元素

【讨论】:

    【解决方案3】:

    我不确定这个问题是否已经得到解答,但我能够在我的本地计算机上找到它,用于 Visual Studio 2013 终极版。您可以在机器上某处的程序集中找到所有类型(例如 DataContextProperty 或我要查找的内容,DesignInstanceExtension),路径如下:

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Microsoft.Expression.Platform.dll

    请注意,这可能因您使用的 Visual Studio 版本而异。我只是在报告“在我的机器上工作”的内容。在机器范围内搜索“Microsoft.Expression.Platform.dll”应该可以解决问题。

    【讨论】:

    • 很好找到@Mike-EEE,但我在我的 VS2017 RC 安装中找不到类似的东西。我什至附加到 VS 以查看加载了哪些模块,我浏览了它们但找不到 DesignInstanceExtension :-/
    • Yikes @Schneider 我不敢冒险在 RC 软件中走得那么远。你有 ReSharper Ultimate,偶然吗?如果您已附加到正在运行的 VS 进程,您可能能够从内存中所有已加载的程序集中查找符号。确保 Xaml 设计时间和设计器也已加载。也就是说,您可以看到 Xaml 设计器屏幕和所有内容。也许这些组件已经完全移到了一个新的组件中?
    • 是的,我已经调试了 XDesProc 进程并查看了一些程序集,但找不到 d:DesignContext(我认为它是 Xaml 标记扩展)
    • 无赖。在 Reflector/dotPeek 中加载 XDesProc.exe 并查看其引用如何?另一种蛮力的方法是在你的机器上对 *.dll 做同样的事情,哈哈。然后进行类搜索。可能需要一段时间,但你应该找到它。 TBH 我忘记了我是如何登陆上面的 DLL 的。 :( 听起来他们已经重命名了程序集。
    • 对于 VS2017 Enterprise 我发现 WpfFrameworkElementDesignTimeProperties 类位于:“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.DesignTools .WpfDesigner.dll”,并且 DesignInstanceExtension 标记扩展位于:“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.DesignTools.Designer.dll”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多