gpt4 book ai didi

wpf - 在属性表达式中检测到循环

转载 作者:行者123 更新时间:2023-12-03 01:17:09 24 4
gpt4 key购买 nike

我正在开发 VS 2012 Express WPF 项目(C# 代码隐藏),但收到错误“在属性表达式中检测到循环”。现在,在我继续之前,我知道为什么会收到它 - 我只是不确定该怎么办,或者是否需要处理它,因为即使它显示在错误列表中并带有蓝色下划线,程序编译并运行得很好。我当然用谷歌搜索过这个,结果各不相同。我的问题有两个部分,但首先,这是概要:

有问题的代码:

<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 设计器发生了一些架构更改,导致了这种情况的发生。我们将来会努力改进这种体验,但现在您可以通过不在 Application 对象中定义资源来解决此问题(App.xaml),而是在本地文档 (MainPage.xaml) 中定义它们”

这是在技术支持查询 Here 中发布的。 (Connect.Microsoft.Com)

但我相信每个人的实践经验。我的程序员同事可以告诉我什么?我的问题是一个两部分的问题。 1. 如果程序正在编译,我还需要考虑解决方法吗? 2.如果我准备好了,有没有办法告诉VS忽略它?我知道我或 VS 忽略它可能被认为是“不好的做法”,但除此之外......?

最佳答案

您使用的语法没有任何问题;定义基于现有隐式样式的隐式样式是合法的。您提供的代码示例在 VS 2010 中适用于我,没有任何提示,但在 VS2012 中会产生相关错误。

由于它在两个版本中都可以正常编译和运行,因此我怀疑问题出在 VS 2012 XAML 设计器支持上。这对您来说有多重要取决于您对 WPF View 的设计器渲染的依赖程度。 (例如,我通常隐藏渲染 View 并专门在 XAML View 中工作。)如果您确实使用该功能,您可能会注意到并非所有属性都在设计时正确设置。当然,由于 setter 通常在运行时之前不会产生太大影响,因此您可能永远不会注意到其中的差异。

并且,正如您的问题正确指出的那样,甚至 Microsoft 也已将其识别为 VS2012 中的回归,这强烈表明他们预计不会发生错误,并且可能会在将来的某个时候修复设计器错误。

关于wpf - 在属性表达式中检测到循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14842317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com