我的一个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
文件。
对此行为的任何解释?
答案 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中的项目代码” !