WPF «Недопустимое значение для свойства» ошибка для присоединенного свойства, даже если оно работает как ожидалось - PullRequest
0 голосов
/ 23 января 2019

У меня есть TextBox с прикрепленным к нему свойством, и Visual Studio выдает ошибку, в которой говорится, что значение свойства недопустимо, даже если оно действительно допустимо.

Вот текстовое поле:

<TextBox 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Top" 
    Width="Auto" 
    styleExtensions:TextBoxExtension.BorderStyle="None"/>

И это AttachedProperty:

public enum BorderStyle
{
    Rounded,
    BottomOnly,
    None
}

public static DependencyProperty BorderStyleProperty =
        DependencyProperty.RegisterAttached(
            "BorderStyle",
            typeof(BorderStyle),
            typeof(TextBoxExtension));

Методы GetBorderStyle и SetBorderStyle также присутствуют, и, поскольку они не делают ничего особенного, я не вставил их сюда.

Когда я рутирую, программа работает, как и ожидалось, все три значения для BorderStyle делают то, что они должны (они вызывают различные изменения в Style), и даже визуальный редактор xaml показывает изменения, как и ожидалось , но по какой-то причине Visual Studio продолжает выдавать мне эту бессмысленную ошибку для этого конкретного TextBox:

'None' is not a valid value for property 'BorderStyle'

Ошибка сохраняется для всех трех значений перечисления. Это же присоединенное свойство также используется где-то еще в ControlTemplate, в другом TextBox, и оно не вызывает эту ошибку.

Я пытался очистить решение, перестроить его, удалить папки bin и obj, удалить папку .vs, но ошибка продолжает появляться.

Я что-то не так делаю или Visual Studio не так? И если да, то есть ли обходной путь для отключения этого конкретного сообщения об ошибке?

Я использую Visual Studio 2017 15.8.8 и .NET Framework 4.7.03056

РЕДАКТИРОВАТЬ: То же поведение можно наблюдать в новом предварительном просмотре VS в 2019 году. Я схожу с ума?

1 Ответ

0 голосов
/ 23 января 2019

Я нашел решение. Запись {x:Static styleExtensions:BorderStyle.None} вместо None решила проблему.

...