如何实现XAML的设计时验证,导致编译错误?

时间:2008-12-02 22:09:33

标签: .net wpf data-binding xaml expression

如何强制在Visual Studio中编写XAML的开发人员应该遵循某些标准并且需要运行验证并且如果抛出了无效的编译时错误。

例如,确保所有数据绑定表达式(有些是真正的长)按照我想在设计时实现的“自定义验证”正确编写。 喜欢,

<TextBox Text="{Binding Source={StaticResource CALCULATED}, Converter={StaticResource XPathConverter}, ConverterParameter=@FIRSTNAME_STRING, XPath=@FIRSTNAME}"/>

在上面的示例中,如果Text属性中的绑定表达式不是那种格式,则应该有编译错误

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

没有内置方法可以做到这一点。获得此结果的最佳方法是在输入上运行自定义工具。这将需要您的大量工作,因为它将涉及自己解析文件,但您应该能够使这个方案工作。

用于创建自定义生成器的示例站点

http://www.drewnoakes.com/snippets/WritingACustomCodeGeneratorToolForVisualStudio/

答案 1 :(得分:0)

抱歉,XAML语言服务也不能以这种方式扩展。今天做到这一点的最好方法是编写构建任务。我认为你可以将它挂钩到MarkupCompilePass1DependsOn目标,并在用户保存或更改XAML文件时自动调用它。您仍然需要从我们这里冗余地扫描文件,但您不必等待实际构建才能使其工作。这是目前正在为WPF设计人员工作的一位Microsoft架构师的直接引用。