Вопрос не в том, как заставить работу работать, она уже делает; это о каком-то странном поведении, которое я испытываю, и мне нужно это понять. У меня есть ResourceDictionary
, который содержит некоторые стили, один из них получил TargetType="{x:Type UserControl}"
и x:Key="UCStyle"
; что один применяется к нескольким UserControl
с в проекте. Некоторые из этих UserControl
s получили string State
свойство в их ViewModel, которое будет использоваться для применения визуальных состояний (через внешний класс и прикрепленное свойство, привязанное к ViewModel в XAML). До этого момента все было идеально, то, я пытался добавить DependencyProperty State
к UserControl
, и просто привязать его к государственной собственности в ViewModel, моя попытка была:Как связать свойство DependencyProperty UserControl с объектом в его ViewModel в MVVM?
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--ResourceDictionary Source="..."/-->
</ResourceDictionary.MergedDictionaries>
<Style x:Key="MyStyle" TargetType="{x:Type local:MyUserControl}" BasedOn="{StaticResource UCStyle}">
<Setter Property="State" Value="{Binding State, Mode=TwoWay}"/>
</Style>
</ResourceDictionary>
</UserControl.Resources>
<UserControl.Style>
<DynamicResourceExtension ResourceKey="MyStyle" />
</UserControl.Style>
Это работало отлично на время выполнения, но в дизайн-время, он всегда подчеркивают эти строки
И показывает ошибка говорит:
TargetType «MyUserControl» не соответствует типу элемента 'UserControl.
И не применяется ни UCStyle
, ни MyStyle
в XAML просмотра в Visual Studio, и даже не привлечь ребенка UserControl
s правильно. Я не ожидал, что решение будет работать правильно, но это так!
Теперь мои вопросы:
- Почему показывают эти ошибки в дизайн-время он работает должным образом?
- Как избавиться от этих ошибок во время разработки? (Я очистил и снова построил решение, и перезапустил Visual Studio, и ни одна из них не сработала)
- Какова наилучшая практика работы с визуальными состояниями `UserControl` в такой ситуации в MVVM?
- Какова наилучшая практика привязки DependencyProperty UserControl к свойству в ViewModel в MVVM?
Я использую Visual Studio 2012.
Немного странно, что вы используете 'TargetType =" {x: Тип local: MyUserControl} ", но используйте' 'Tag. Должен ли тег также быть '' тоже? Поскольку это сообщение об ошибке действительно говорит/жалуется на –
Tseng
@Tseng, если бы я это сделал, я бы наследовал '' от '' .. –