У меня странная проблема с VisualStudio. Возможно, это ошибка в IDE, но я хочу знать, есть ли что-то необычное в том, как я поступаю по этому поводу.
Прежде всего, у меня есть UserControl
, который определяет тег ресурсов. Я устанавливаю стиль в этом теге, который предназначен для применения к моему производному UserControl (StackEntry). Я использую DataTrigger, чтобы условно установить DependencyProperty для этого пользовательского элемента управления на определенное значение.
Интересно, что, несмотря на то, что Visual Studio говорит мне, что у меня есть две ошибки, я в состоянии построить решение просто отлично. Он даже работает точно так, как и ожидалось - DependencyProperty устанавливается триггером. Тем не менее, я все еще хочу выяснить, что вызывает это, чтобы я мог вернуть окно дизайна. В настоящее время отображается сообщение «Неверная разметка».
Я пробовал:
Использование разных свойств. Пользовательские свойства никогда не работают, но те, которые определены в UserControl, работают.
Установка триггера в отдельный файл (ресурс).
Перезапуск Visual Studio. Это приводит к тому, что «ошибка» временно устраняется, пока она не появится с, казалось бы, произвольным интервалом.
Перестройка проекта.
Запуск проекта.
Вот соответствующий XAML:
<UserControl.Resources>
<Style TargetType="{x:Type con:StackEntry}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Control, Path=Element.EntityConditionState.IsEmpty}" Value="True">
<Setter Property="ConditionRowHeight" Value="0"/> <!-- this is the line throwing the "error". -->
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
Свойство DependencyProperty, на которое я ссылаюсь:
public GridLength ConditionRowHeight
{
get => (GridLength)GetValue(ConditionRowHeightProperty);
set => SetValue(ConditionRowHeightProperty, value);
}
public static readonly DependencyProperty ConditionRowHeightProperty =
DependencyProperty.Register("ConditionRowHeight", typeof(GridLength),
typeof(StackEntry), new PropertyMetadata(new GridLength(0.8, GridUnitType.Star)));
Поскольку класс StackElement определяет DP ConditionRowHeight, установка TargetType тега Style должна позволять любым тегам Setter использовать его. Однако я получаю следующую ошибку:
Свойство ConditionRowHeight не является свойством DependencyProperty. Для использования в разметке несвязанные свойства должны быть представлены для целевого типа с помощью доступного свойства экземпляра «ConditionRowHeight». Для прикрепленных свойств объявляющий тип должен предоставлять статические методы «GetConditionRowHeight» и «SetConditionRowHeight».
Также, как указано выше, в окне дисплея XAML отображается сообщение «Неверная разметка».
Я использую Visual Studio Community 2019, если это поможет.