附加 属性 的 WPF "not a valid value for property" 错误,即使它按预期工作
WPF "not a valid value for property" error for attached property even though it works as expected
我有一个带有附加 属性 的文本框,Visual Studio 给我一个错误,指出 属性 值无效,尽管它实际上是有效的.
这是文本框:
<TextBox
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
Width="Auto"
styleExtensions:TextBoxExtension.BorderStyle="None"/>
这是附加属性:
public enum BorderStyle
{
Rounded,
BottomOnly,
None
}
public static DependencyProperty BorderStyleProperty =
DependencyProperty.RegisterAttached(
"BorderStyle",
typeof(BorderStyle),
typeof(TextBoxExtension));
GetBorderStyle
和 SetBorderStyle
方法也存在,因为它们没有什么特别的,所以我没有将它们粘贴在这里。
当我运行它时,程序按预期工作,BorderStyle
的所有三个值都按照预期进行(它们触发 Style
中的不同变化)甚至视觉 xaml 编辑器按预期显示更改,但由于某种原因 Visual Studio 一直给我这个特定文本框的这个毫无意义的错误:
'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 预览中可以观察到相同的行为。我要疯了吗?
我找到了解决方案。写 {x:Static styleExtensions:BorderStyle.None}
而不是 None
解决了问题。
我有一个带有附加 属性 的文本框,Visual Studio 给我一个错误,指出 属性 值无效,尽管它实际上是有效的.
这是文本框:
<TextBox
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
Width="Auto"
styleExtensions:TextBoxExtension.BorderStyle="None"/>
这是附加属性:
public enum BorderStyle
{
Rounded,
BottomOnly,
None
}
public static DependencyProperty BorderStyleProperty =
DependencyProperty.RegisterAttached(
"BorderStyle",
typeof(BorderStyle),
typeof(TextBoxExtension));
GetBorderStyle
和 SetBorderStyle
方法也存在,因为它们没有什么特别的,所以我没有将它们粘贴在这里。
当我运行它时,程序按预期工作,BorderStyle
的所有三个值都按照预期进行(它们触发 Style
中的不同变化)甚至视觉 xaml 编辑器按预期显示更改,但由于某种原因 Visual Studio 一直给我这个特定文本框的这个毫无意义的错误:
'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 预览中可以观察到相同的行为。我要疯了吗?
我找到了解决方案。写 {x:Static styleExtensions:BorderStyle.None}
而不是 None
解决了问题。