Wpf 如何在XAML中设置d:DesignInstance的属性?

Wpf 如何在XAML中设置d:DesignInstance的属性?,wpf,xaml,Wpf,Xaml,我正在使用4.0系列WPF工具的新d:DesignInstance特性。很好 我遇到的唯一问题是:如何设置实例的属性?考虑到这样的情况: <Grid d:DataContext="{d:DesignInstance plugin:SamplePendingChangesViewModel, IsDesignTimeCreatable=True}"/> 除了在viewmodel的默认ctor中设置属性或通过其他对象初始值设定项对其进行路由之外,如何在viewmodel上设置属性

我正在使用4.0系列WPF工具的新d:DesignInstance特性。很好

我遇到的唯一问题是:如何设置实例的属性?考虑到这样的情况:

<Grid d:DataContext="{d:DesignInstance plugin:SamplePendingChangesViewModel, IsDesignTimeCreatable=True}"/>

除了在viewmodel的默认ctor中设置属性或通过其他对象初始值设定项对其进行路由之外,如何在viewmodel上设置属性

我尝试了一下,但VS在编译“d:DataContext未找到”时出错:


目前,我将返回到使用一个资源和'd:DataContext={StaticResource SampleData}',在这里我可以设置资源中的属性


有没有办法通过d:DesignInstance来实现这一点?

作为@jberger,您可能应该使用
d:DesignData
而不是内联
d:DataContext

但是,您也可以在xaml文件中内联设置d:DataContext,秘诀是使用正确的类(
DesignProperties
)来限定
d:DataContext
属性:

<d:DesignProperties.DataContext>
   <plugin:SamplePendingChangesViewModel ActiveTagIndex="2"/>
</d:DesignProperties.DataContext>
大多数标记表达式都是这样,但不需要遵循这种命名约定(绑定类是一个明显的例外),更多信息可在此处找到:


您必须选择其中之一:1。使用默认的ctor或2。使用d:而不是d:DesignInstance这是一个完整的异常(用于搜索此答案):错误2找不到类型“d:DataContext”。验证您是否缺少程序集引用,以及是否已生成所有引用的程序集。我只是想比您更了解!这就像VS的一个隐藏特性,因为XAML编辑器中的autocomplete不建议使用
d:DesignProperties
。现在还剩下另一个问题:当我更改
DataContextChanged
视图模型的任何属性时,
DataContextChanged
事件似乎不会在designer中触发。当控件放置在另一个控件中,而不是控件本身时,它会工作。
<d:DesignProperties.DataContext>
   <plugin:SamplePendingChangesViewModel ActiveTagIndex="2"/>
</d:DesignProperties.DataContext>
<d:DesignProperties.DataContext>
  <d:DesignDataExtension Source="SampleData.xaml"></d:DesignDataExtension>
</d:DesignProperties.DataContext>