2016-06-21 5 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 дез igner показывает имя свойства свойства string, а для свойства int он показывает 0.

В окне ошибки нет ошибки. Кроме того, он, по-видимому, действительно читает свойства, потому что, если я изменяю привязку к несуществующему имени свойства, содержимое исчезает.

Я перезапустил Visual Studio и свой компьютер и удалил файл .suo.

Любые объяснения по этому вопросу?

ответ

2

Оказывается недостающее вещь была IsDesignTimeCreatable атрибутом:

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

С этим атрибутом, все работает, как ожидалось.

+3

Еще одна вещь, которую нужно попробовать людям: трюк для меня состоял в том, чтобы удалить .vs папку (и, возможно, папки bin и obj). Иш. – Vimes

-1

Я столкнулся с этой проблемой, но причина в том, что у меня не было активированного кода проекта в XAML Designer.