2010-12-16 2 views
4

Я использую MVVM для своего приложения, DataContext элементов управления назначается в моем коде C# (а не в XAML).XAML DataContext и ViewModel Type

Поэтому элементы управления XAML не имеют представления, к какому экземпляру задан его DataContext. Следствием этого является отсутствие поддержки рефакторинга и intellisense для связанных свойств моей viewmodel в XAML.

Есть ли способ сообщить элемент управления в XAML, к какому типу связан его DataContext?

Поэтому, когда я изменяю имя свойства в своей модели ViewModel или ищу все ссылки на это свойство, я хочу, чтобы это свойство в привязках XAML тоже рассматривалось.

ответ

3

Нет поддержки фреймов, лучшее, что вы можете сделать, это показать конструктору VS «форму» DataContext, чтобы он дал вам подсказки для свойств. Если вы хотите, чтобы сделать ваше решение более рефакторинг-доказательство, я рекомендовал бы решение T4 метаданных Дэниела:

http://www.codeproject.com/KB/codegen/T4Metadata.aspx

Это generatesmetadata для моделей просмотреть которые вы можете ссылаться в XAML:

<StackPanel DataContext="{Binding Source={StaticResource Person}}"> 
    <TextBlock >Name:</TextBlock> 
    <TextBox Text="{Binding Path={x:Static Metadata:PersonMetadata.NamePath}}"/> 
</StackPanel> 

Colin E.

2

Нет, поскольку DataContext может меняться во время выполнения, нет смысла привязывать это к определенному типу.

+2

Хотя это может быть правдой, у меня есть много случаев, когда элемент управления связан с одним конкретным видом модели – thumbmunkeys 2010-12-16 15:14:22

Смежные вопросы