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

WPF XAML designer showing bound property names instead of property values

我的一个 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 设计器显示字符串 属性 的 属性 名称,对于整数 属性,它显示一个 0。

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

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

对此行为有任何解释吗?

原来缺少的是 IsDesignTimeCreatable 属性:

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

有了这个属性,一切都按预期工作。

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

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

新帐户所以我不能投票或发表评论,我只是不喜欢看到正确答案被否决。

谢谢你最后两个答案。在我的例子中 'Enable Project Code in XAML' 也随机关闭了!我有几个星期没有让设计师提取视图模型代码了。很高兴这已得到修复。所以总而言之,为了让这个工作你需要:

d:DataContext="{d:DesignInstance vm:MyDesignTimeViewModel}"

以及带有蓝色方块和标题 'Enable Project Code in XAML' 的小图标将被打开!