30

我数据绑定的版本号出现如下:

<Window <!-- ... --> DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <Grid>
        <TextBlock>
            Version is: 
            <Run Text="{Binding Version, Mode=OneWay}"></Run>
            and advancing...
        </TextBlock>
    </Grid>
</Window>

它在运行时工作。

如何在 Visual Studio 2012 的 XAML 编辑器中的设计时看到它?我只看到:

Version is: and advancing...

代替:

Version is: 5.2.2 and advancing...

编辑 - 我的解决方案:

Jure 在下面的回答有效,但我最终使用了一种虚拟视图模型静态代码技术,这对我来说效果更好,因为数据是真实视图模型类型的模拟:

d:DataContext="{Binding Source={StaticResource DesignViewModel}}" ...
4

2 回答 2

49

确保您在 xaml 文件的根标记(在您的情况下是 Window 标记)中有这些定义:

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"

然后,您可以在 xaml 中的任何位置(包括根标记)添加以下内容:

d:DataContext="{d:DesignInstance myNamespace:MyViewModel, IsDesignTimeCreatable=True}"

现在您只需要确保初始化构造函数中的值或具有属性的默认值。

如果您需要为设计模式运行特殊逻辑,请查看此答案

于 2013-05-06T15:49:32.790 回答
21

简短的回答,你不能那样做。VS 设计器未执行运行时代码,并且您的绑定不会在设计时解决。但是通过d:DesignData扩展支持设计时数据。

您可以通过这种方式设置设计数据上下文:

<Window xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" 
    d:DataContext="{d:DesignData Source=/SampleData/SomeSampleData.xaml}"
    DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
    <TextBlock>
        Version is: 
        <Run Text="{Binding Version, Mode=OneWay}"></Run>
        and advancing...
    </TextBlock>
</Grid>

d:DataContext={d:DesignData....设置DataContext将用于解析 VS 设计器表面中的绑定的设计时间。您可以将其设置为包含示例数据的 xaml 文件。示例 xaml 文件应使用“DesignData”构建操作构建。

在此处查看更多信息:http: //blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/sample-data-in-the-wpf-and-silverlight-designer.aspx

于 2013-05-06T15:32:35.463 回答