4

私は 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 行に最終的に絞り込むまで、コードを処理するのに何年もかかりました。

TextBoxaに変更Label(およびTextプロパティを に変更Content) すると、このクラッシュが回避され、プログラムは計画どおりに機能しました。単なるTextBoxエラーのようです。

に切り替えることは可能ですがTextBoxLabel私の場合はとにかく)、見た目のためReadOnlyに を好むでしょう。コードビハインドからプロパティを手動でTextBox更新する必要があるかもしれません。Text

とにかく、主に、他の誰かが同様の問題に遭遇した場合に備えて、この問題を指摘したかっただけです. なぜこれがそうであるかについての考えは大歓迎です。

4

1 に答える 1

0

コメントの提案から、AppDomain.UnhandledExceptionここで概説したように実装しました。コードを直前に置きます:

app.InitializeComponent();

app.Run();

これを ) に出力するようにしましたMessageBox。その後、問題を再現すると、次のメッセージが表示されました。

の「TwoWay または OneWayToSource バインディングは読み取り専用プロパティでは機能しませんTextBox

に変更するとOneWay問題は解決しますが、Windows 7 ではなく XP で発生する理由はわかりません。notにすることもTextBoxできReadOnlyますが、私の場合はそのままにしておきますReadOnly

于 2012-09-20T15:12:41.677 に答える