WPF XAML设计器显示绑定的属性名称而不是属性值

时间:2016-06-21 14:20:20

标签: wpf xaml xaml-designer

我的一个XAML文件在XAML设计器中显示了一个奇怪的行为(但在运行时没有):

public class MyDesignTimeViewModel
{

    public MyDesignTimeViewModel()
    {
        MyText = "abc";
        MyInt = 5;
    }

    public string MyText { get { ... } }
    public int MyInt { get { ... } }
}

然后在XAML中:

<UserControl xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             ...
             d:DataContext="{d:DesignInstance vm:MyDesignTimeViewModel}"
             >
    <TextBlock Text="{Binding MyText}" />
    <TextBlock Text="{Binding MyInt}" />
</UserControl>

在XAML设计器中,两个TextBlock实例显示以下内容:

MyText
0

XAML设计器显示字符串属性的属性名称,对于int属性,它显示0。

错误窗口中没有错误。此外,它似乎实际上读取了属性,因为如果我将绑定更改为不存在的属性名称,则内容将消失。

我重新启动了Visual Studio和我的电脑并删除了.suo文件。

对此行为的任何解释?

4 个答案:

答案 0 :(得分:2)

原来遗漏的是IsDesignTimeCreatable属性:

d:DataContext="{d:DesignInstance vm:MyDesignTimeViewModel, IsDesignTimeCreatable=true}"

使用该属性,一切都按预期工作。

答案 1 :(得分:2)

我遇到了这个问题,但原因实际上是我没有在XAML Designer中启用启用项目代码。

答案 2 :(得分:0)

为了回应J.G。的回答,解决方法是在XAML设计器中启用项目代码,该代码在某些时候被神秘地禁用。

新帐户让我无法投票或评论,我只是不喜欢看到正确的答案。

答案 3 :(得分:0)

谢谢您的最后两个答案。就我而言,“在XAML中启用项目代码”也已随机关闭!我没有设计师拉了几个星期的视图模型代码。非常高兴,此问题已得到解决。因此,要使此工作正常进行,您需要:

d:DataContext =“ {d:DesignInstance vm:MyDesignTimeViewModel}”

以及带有蓝色正方形和标题的小图标“启用XAML中的项目代码”