MSDN在事件设置程序上表示:
事件集不能在主题资源字典中包含的样式中使用。这是因为在运行时的主题资源字典通常是松散的二进制XAML (BAML)文件,并且没有在定义处理程序的伴随代码后面定义的任何范围。
这个问题的第一个答案证实了这一点,它指出:
资源xaml不能有文件后面的代码,它们通常被称为“松散xaml”。您可以在msdn中阅读有关EventSetter的相关内容。
但是,我还不理解事件设置器的局限性。我曾尝试使用代码隐藏文件作为资源字典。我已经为包含在所述资源字典中的样式中定义的模板中的控件的事件分配了一个事件处理程序,并且它起了作用。
另一方面,将事件集添加到同一资源字典中的样式会导致异常。
我遇到了一个特殊的情况,它碰巧起作用了吗?
或者在模板中设置事件处理程序总是有效的,但是如果是这样的话,为什么我不能在同一资源字典中使用样式中的事件集呢?
我的问题归结为:
主题资源字典是通常是松散二进制XAML的声明到底是什么意思?
发布于 2013-02-19 00:11:07
这意味着它是单独编译的,而不是在名称空间后面或内部使用代码。
或者换句话说,松散的xaml文件没有代码部分,可以将其作为文本从数据库中读取,或者以文本的形式动态生成,加载时不需要任何编码关联。
至于天气,这是一个合理的理由。这取决于每个开发人员,但这就是松散xaml的含义。
编辑:
作为对您的评论的回应,我可以想象它们专门指的是参考资料和样式,因为它们是最常见的“松散文件”,而且大多数人通常不会用代码文件来支持它们。就我个人而言,我认为这是一个解决办法。他们可以轻松地添加一个Loose=True属性并解决这个问题。
实际上,这个问题并不是与松散文件的数量或使用它们的频率有关,而是与这样一个事实有关:一个规则是用来补偿缺少的特性的。如果他们只是说你不能做x,y,z,因为我们还没有构建对它的支持,而不是说它是因为一些任意数量的松散的xaml文件,那就容易多了。
https://stackoverflow.com/questions/13902026
复制相似问题