在 Windows XP 上运行时 TextBox.Text 绑定错误
Posted
技术标签:
【中文标题】在 Windows XP 上运行时 TextBox.Text 绑定错误【英文标题】:TextBox.Text binding error when running on Windows XP 【发布时间】:2012-08-29 22:07:57 【问题描述】:我注意到 WPF 中有一个有趣的错误,我想知道是否其他人也看到了它,如果有,他们是如何解决的?
我有一个Window
,里面有一个GroupBox
,里面有一个TextBox
。 GroupBox
上的 DataContext
设置为我程序中的一个对象,因此TextBox
上的绑定设置如下:
<TextBox Text="Binding Directory_Data" IsReadOnly="True"
Name="dataPath_TextBox" Grid.Column="0" Grid.Row="1"
Height="23" Margin="6,3,3,3"/>
在 Windows 7(我在其上开发)上,这可以正常工作,我什至没有理由再考虑 XAML 的那一行。然而,在 Windows XP(安装了 .NET4.0)上进行一些测试时,打开这个Window
导致整个程序崩溃,并出现以下错误:
EventType: clr20r3, system.invalidoperationexception.
我花了很长时间才完成代码,直到最终将其缩小到上面的 XAML 行。
将TextBox
更改为Label
(并将Text
属性更改为Content
)防止了此崩溃并且程序按计划运行;这似乎是一个TextBox
错误。
虽然可以将TextBox
切换为Label
(考虑到在我的情况下无论如何都会是ReadOnly
),但为了外观,我更喜欢TextBox
。可能是我必须从后面的代码手动更新Text
属性。
无论如何,我主要只是想指出这个问题,以防其他人遇到类似的事情。任何关于为什么会这样的想法都将不胜感激。
【问题讨论】:
是否有更多关于错误的信息?像堆栈跟踪什么的?另外,您是否尝试过另一台基于 XP 的机器? (以确保它不仅仅是框架的损坏安装) 错误框中有一些数字;我不认为它们会很有意义,但如果你愿意,我可以添加它们?是的,我已经在两台机器上试过了。实际上是有人在一台 XP 机器上为我测试它发现了错误,此时我自己在另一台机器上尝试了它并设法复制它。 不,不幸的是,这些数字没有任何用处,至少对我而言。订阅AppDomain.UnhandledException
事件会触发吗?您可以通过这种方式收集更多信息。 msdn.microsoft.com/en-us/library/…
你能否在调试器中打开 CLR 异常以在抛出此异常时获取堆栈跟踪?我想由于 XP 和 Win7 中 WPF 使用的不同渲染器,视图数据可能会以稍微不同的顺序初始化/绑定。
嗨,Gaz,我不能执行 CLR 异常,因为 XP PC 没有 Visual Studio,所以我不能在调试器中运行程序。但是,AppDomain.UnhandledException 解决了这个问题......它表明“A TwoWay 或 OneWayToSource”绑定不能在只读文本框上工作,因此将其更改为 OneWay 可以解决问题。有趣的是,这个问题只出现在 Windows 7 而不是 XP 上。我希望我以前知道这个事件,它会为我节省很多时间!谢谢 KooKiz!
【参考方案1】:
根据 cmets 中的建议,我实现了AppDomain.UnhandledException
,如此处所述。我之前放了代码:
app.InitializeComponent();
app.Run();
然后将其输出到MessageBox
)。然后重新创建问题,我收到以下消息:
TextBox
的“TwoWay 或 OneWayToSource 绑定无法对只读属性起作用”。
将其更改为OneWay
可以解决问题,但我不确定为什么会在 XP 而不是 Windows 7 上发生这种情况。使TextBox
不是ReadOnly
也可以,但就我而言,我希望它保持ReadOnly
。
【讨论】:
以上是关于在 Windows XP 上运行时 TextBox.Text 绑定错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows XP 上大批量运行时,Python selenium webdriver 测试导致“严重错误”
在 Visual Studio 中使用 XP 工具集编译时出现路径空间的 Windows XP 运行时问题