0

これを Microsoft Connect に記録したところですが、他の誰かがこの問題に遭遇して修正を見つけたのではないかと考えています。Googleはあまり表示されていません...

簡単な再現:

  • アプリケーションに MaxLength が設定された WPF テキスト ボックスがある
  • TabletPC 入力パネルを使用して、許可されているよりも多くのテキストを書き込む
  • TabletPC パネルで「挿入」を押すとアプリケーションがクラッシュする

MaxLength を使用しないようにアプリケーションの動作を変更する以外に、解決策を知っている人はいますか?

(Microsoft からアドバイスがあれば、ここに投稿します。)

編集: .NET 3.5 と Windows 7 を実行していると指定する必要がありました。

4

3 に答える 3

1

アプリケーションのアーキテクチャによっては、MVVM を使用している場合は、MaxLength を削除してから、ViewModel オブジェクトで検証を行って、値が期待する長さと一致することを確認します。

それ以外の場合は、この記事で説明されているように、Binding Validation を使用する可能性があります。

郵便番号や電話番号のように本当に長さが制限されているものの場合は最適とは言えませんが、すべての検証を 1 か所で内部化できます。

于 2010-03-11T16:35:12.110 に答える
0

正直に言うと、私は WPF や Tablet PC とのやり取りの経験がないので、ここでは盲目的に撃っていますが、目標を達成するか、何かを学ぶつもりです :)

私の単純化した観点から、多くの回避策が見られますが、すべて最大長を削除する必要があります。

  1. 送信時に、VM 内の文字列が長すぎる場合は切り捨てます
  2. 送信時に、ユーザーに切り捨てを警告し、切り捨てられた文字列を編集用のテキスト ボックスに表示します。
  3. イベントをテキスト ボックスから切り離し、文字列 "OnChange" を切り捨てて、Web フォーム エラーのようにフィールドに隣接するラベル アラートを表示します。

とにかく、彼らが何について話しているのかを知っている人からの回答を期待しています;)

于 2010-03-11T16:05:44.577 に答える
0

どうやらこれは .NET 4.0 で修正されているようですが、3.5 で修正する予定はありません。MS からの提案は、TextChanged イベントを処理して MaxLength を自動的に提供することでした (えー!)。

于 2010-03-15T22:21:23.400 に答える