4

我的一个 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

4 回答 4

4

谢谢你最后两个答案。就我而言,“在 XAML 中启用项目代码”也已随机关闭!我有几个星期没有让设计师拉取视图模型代码。非常高兴这已得到修复。所以总而言之,要让这个工作你需要:

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

以及带有蓝色方块和标题“在 XAML 中启用项目代码”的小图标将被打开!

于 2019-06-06T12:58:28.143 回答
3

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

于 2018-03-09T18:57:44.793 回答
2

原来缺少的是IsDesignTimeCreatable属性:

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

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

于 2016-06-21T14:21:13.353 回答
1

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

新帐户,因此我无法投票或发表评论,我只是不喜欢看到正确答案被否决。

于 2018-05-09T18:13:57.473 回答