2017-03-22 4 views
0

キーストロークでピックアップするリスナーがViewModelにあります。 1秒以内に10回以上のキーストロークがある場合は、それがスワイプリーダーからのものであることを意味します。WPF DataGridがstringbuilderからキャリッジを返す

スワイプリーダーは複数行にすることができ、外部ライブラリは新しい行の場所に基づいて動作します。

このコードでは、入力されたスワイプデータの一部を別のエンティティに分割し、DataGridに追加して、ユーザーがポップアップを開く行をダブルクリックして、ユーザーが詳細を編集できるようにします。

この問題は、フォーカスがDataGridCellに移動され、新しいカードがスワイプされたときに、私のViewModelのこの文字列の後に同じデータが表示されるため、DataGridCellがこれらのキャリッジリターンを消費/処理していると推測します。キャリッジリターンなしでは、例外をスローします。

データグリッドがリターンキーを消費/処理するのを防ぐことができますが、ユーザーが行を選択できるようにして、ビューモデルがこれらのキャリッジリターンで再びピックアップするのを防ぐ方法はありますか?

答えて

1

私はこれに対する実際の解決策を見つけたと考えてください。私のコードビハインドでは、私はDataGrid_OnKeyUpイベントを処理し、次の操作を行います

private void DataGrid_OnKeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
     TextCompositionManager.StartComposition(new TextComposition(InputManager.Current, this, Environment.NewLine)); 
    } 
} 

これは、キーがリターンキーで、今のように、予想通りその後、効果的WindowEnvironment.NewLineを送信し、動作するように表示するかどうかをチェックします外部ライブラリは\ rと\ r \ nを確認します