我注意到WPF中有一个有趣的错误,我想知道是否还有其他人也看过它,如果有的话,他们是如何解决的呢?
我有一个Window
,其中是GroupBox
,其中是TextBox
。 DataContext
上的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
导致整个程序崩溃,出现此错误:
EventType:clr20r3,system.invalidoperationexception。
我花了很长时间才完成代码,直到我最终将其缩小到上面的XAML行。
将TextBox
更改为Label
(并将Text
属性更改为Content
)可防止此次崩溃,并且该计划按计划运行;它似乎只是TextBox
错误。
虽然可以将TextBox
切换为Label
(考虑到我的情况下它仍然是ReadOnly
),我希望TextBox
为了外观。可能是我必须从后面的代码手动更新Text
属性。
无论如何,主要是我只是想指出这个问题以防其他人遇到类似的东西。尽管如此,对于为什么会这样做的任何想法都会受到赞赏。
答案 0 :(得分:0)
根据评论中的建议,我实施了AppDomain.UnhandledException
,如此处所述。我把代码放在前面:
app.InitializeComponent();
app.Run();
然后将其输出到MessageBox
)。然后重新创建问题我收到以下消息:
“TwoWay或OneWayToSource绑定无法在TextBox
的只读属性上运行。
将其更改为OneWay
可以解决问题,但为什么会出现这种情况在XP而不是Windows 7上我不确定。使TextBox
不ReadOnly
也可以,但在我的情况下,我希望它保持ReadOnly
。