【问题标题】:TextBox.Text binding error when running on Windows XP在 Windows XP 上运行时 TextBox.Text 绑定错误
【发布时间】:2012-08-29 22:07:57
【问题描述】:

我注意到 WPF 中有一个有趣的错误,我想知道是否其他人也看到了它,如果有,他们是如何解决的?

我有一个Window,里面有一个GroupBox,里面有一个TextBoxGroupBox 上的 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!

标签: .net wpf windows-7 windows-xp


【解决方案1】:

根据 cmets 中的建议,我实现了AppDomain.UnhandledException,如此处所述。我之前放了代码:

app.InitializeComponent();

app.Run();

然后将其输出到MessageBox)。然后重新创建问题,我收到以下消息:

TextBox 的“TwoWay 或 OneWayToSource 绑定无法对只读属性起作用”。

将其更改为OneWay 可以解决问题,但我不确定为什么会在 XP 而不是 Windows 7 上发生这种情况。使TextBox 不是ReadOnly 也可以,但就我而言,我希望它保持ReadOnly

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多