如何在XAML编辑器中查看设计时数据绑定(它在运行时工作)?

时间:2013-05-06 15:20:09

标签: wpf visual-studio xaml data-binding design-time

我的数据绑定版本号显示如下:

<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's answer below有效,但我最终使用dummy view-model static code technique,这对我来说效果更好,因为数据是真实视图模型类型的模拟:

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

2 个答案:

答案 0 :(得分:41)

确保您在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}"

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

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

答案 1 :(得分:17)

简短的回答,你不能这样做。 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>
</Window>

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

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