2016-06-21 50 views
2

我的一个XAML文件显示了XAML设计一个奇怪的行为(而不是在运行时):显示绑定属性名称,而不是财产WPF 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 DES igner显示字符串属性的属性名称,对于int属性,它显示0.

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

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

对此行为的任何解释?

回答

2

原来丢失的东西是IsDesignTimeCreatable属性:

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

与该属性,一切正常。

+3

人们尝试的另一件事是:我的诀窍是删除.vs文件夹(可能还有bin和obj文件夹)。 Yeesh。 – Vimes

-1

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