我正在开发一个 VS 2012 Express WPF 项目(C# 代码隐藏),我收到错误“在属性表达式中检测到循环”。现在在我继续之前,我知道我为什么会得到它 - 我只是不确定该怎么做,或者是否需要处理它,因为即使它出现在错误列表中并带有蓝色下划线,程序编译并运行得很好。当然,我已经用 Google 搜索过,结果各不相同。我的问题是两部分的,但首先,这是纲要:
违规代码:
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<!-- setter properties -->
</Style>
如您所见,它是 Button 的一种样式,指的是导致问题的 Button。我读到的第一个解决方法涉及像这样分离代码:
<Style x:Key="ButtonStyleToApply" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<!-- setter properties -->
</Style>
<!-- and in another style dictionary, -->
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonStyleToApply}"/>
...然后这两个样式集进入不同的字典。显然,这也没有任何好处 - VS 仍然嗅出我在做什么,但它仍然可以编译并运行良好。现在这是另一种解决方法:
“Visual Studio 中的 XAML 设计器中存在一些架构更改,这已使这种情况倒退。我们将在未来努力改善这种体验,但现在您可以通过不在应用程序对象(App. xaml) 而是在本地文档 (MainPage.xaml) 中定义它们”
这是在技术支持查询中发布的。(Connect.Microsoft.Com)
但我相信每个人的亲身体验。我的程序员同事能告诉我什么?我的问题是两部分的。1.如果程序正在编译,我什至需要解决这个问题吗?2.如果我很高兴,有没有办法告诉VS忽略它?我知道我或 VS 忽略它可能被认为是“不好的做法”,但除此之外......?