4

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

我有一个Window, 里面是一个GroupBox, 里面是一个TextBox. DataContexton设置为我的程序中的GroupBox一个对象,因此绑定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会导致整个程序崩溃,并出现以下错误:

事件类型:clr20r3,system.invalidoperationexception。

我花了很长时间才完成代码,直到最终将其缩小到上面的 XAML 行。

更改TextBox为 a Label(并将Text属性更改为Content)可防止此崩溃,并且程序按计划运行;这似乎是一个TextBox错误。

虽然可以切换TextBoxLabel(考虑到在我的情况下ReadOnly无论如何都会切换),但我更喜欢TextBox外观。可能是我必须Text从后面的代码手动更新属性。

无论如何,主要是我只是想指出这个问题,以防其他人遇到类似的事情。任何关于为什么会这样的想法都将不胜感激。

4

1 回答 1

0

根据评论中的建议,我AppDomain.UnhandledException按照此处概述的方式实施。我之前放了代码:

app.InitializeComponent();

app.Run();

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

“TwoWay 或 OneWayToSource 绑定不能在只读属性上工作” TextBox

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

于 2012-09-20T15:12:41.677 回答