WPF xaml中的 xmlns:d=“http://schemas.microsoft.com/expression/blend/2008“ 的使用
2026/7/22 0:22:00 网站建设 项目流程

在编辑界面代码时,我发现一行代码:

d:DataContext="{d:DesignInstance Type={x:Type localVM:EmbossingActionConfigPageViewModel}, IsDesignTimeCreatable=False}"

关于其中的DataContext的指定逻辑让我很疑惑。

因为我在C#代码中也指定了DataContext,给我的感觉就是这里的d:DataContext=...并没有起作用,以下是学习到的知识点:

各部分含义:

  1. d:命名空间

    • 这是设计时命名空间,通常定义为:

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

    • 只在设计时生效,运行时会被忽略

  2. d:DataContext

    • 仅为设计器设置数据上下文

    • 不会影响运行时的实际DataContext

  3. d:DesignInstance

    • 一个特殊的标记扩展,创建设计时实例

  4. Type={x:Type localVM:EmbossingActionConfigPageViewModel}

    • 指定要使用的ViewModel类型

    • localVM是ViewModel的命名空间前缀

  5. IsDesignTimeCreatable=False

    • 重要参数!表示不真正创建ViewModel实例

    • 只使用类型元数据提供智能感知

实际作用

1.提供智能感知

<!-- 在设计器中,你可以这样绑定: --> <TextBox Text="{Binding ViewModelProperty}" /> <!-- ↑ 输入时会有ViewModel属性的智能感知提示 -->

2.设计时预览

<!-- 如果 IsDesignTimeCreatable=True --> d:DataContext="{d:DesignInstance Type=localVM:MyViewModel, IsDesignTimeCreatable=True}"

会实际创建ViewModel实例,可以:

  • 预览真实数据

  • 看到控件样式

  • 测试布局

3.与运行时DataContext的关系

<!-- 典型用法 --> <UserControl x:Class="MyView" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" d:DataContext="{d:DesignInstance Type=localVM:MyViewModel, IsDesignTimeCreatable=False}" DataContext="{Binding MyViewModel, Source={StaticResource Locator}}"> <!-- 设计时:使用d:DataContext获取智能感知 运行时:使用实际的DataContext绑定 --> </UserControl>

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询