Wpf 如何在XAML中设置d:DesignInstance的属性?
我正在使用4.0系列WPF工具的新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上设置属性
<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>