2017-03-22 1 views
0

키 스트로크에서 픽업하는 리스너를 내 ViewModel에 가지고 있습니다. 1 초 이내에 10 번 이상의 키 스트로크가 있으면 스 와이프 리더에서 발생했음을 의미합니다.WPF DataGrid가 stringbuilder에서 캐리지 리턴

스 와이프 리더는 여러 줄로 구성 될 수 있으며 외부 라이브러리는 줄 바꿈 위치를 기반으로 작동합니다.

이 코드는 입력 된 스 와이프 된 데이터의 부분을 별도의 엔터티로 분할 한 다음 사용자가 DataGrid에 추가 한 다음 사용자가 팝업을 열 수있는 행을 두 번 클릭하여 사용자가 세부 정보를 편집 할 수 있도록합니다.

문제는이 작업을 수행 할 때 포커스가 DataGridCell로 이동 한 다음 새 카드를 쓸어 넘기면 내 ViewModel의 내 문자열이 동일한 데이터를 보여주기 때문에 DataGridCell이 이러한 캐리지 리턴을 사용/처리합니다 캐리지 리턴 없이는 예외가 발생합니다.

DataGrid가 반환 키를 사용/처리하지 못하게하고 사용자가 행을 선택하도록 허용하고 내 viewmodel이 캐리지 리턴을 다시 선택할 수있게하는 방법이 있습니까?

답변

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을 확인합니다.