2010-05-10 5 views
2

기존 앱 변환 문제. VB6 TextBox_KeyDown()은 키가 변경되도록합니다 (예 : 키 입력을 대문자로 강제 실행하지만 다른 많은 용도가 있습니다). 어떻게 이것을 WPF에서 할 수 있습니까?WPF 키 다운에서 키 변경

내가 볼 수있는 유일한 방법은 모든 TextBox 키 입력을 처리하는 것입니다. 실제로 TextBox 편집을 다시 구현하십시오. 나는 거기에 가지 않을 것입니다.

답변

0

매우 빠르고 더러운 솔루션입니다. TextBox.Text 값을 무언가에 바인딩하려고한다고 가정하면 문자열에 단순히 ToUpper()를 호출하는 변환기를 작성할 수 있습니다.

아래 샘플에서는 텍스트 상자 자체에 바인딩되어 있습니다. 이것은 당신이 프로덕션에서 원하는 것이 아닌 가능성을 높여 주지만 가능한 한 영감을 줄 수 있습니다.

<local:UpperConverter x:Key="toUpperConverter" /> 

...

<TextBox Text="{Binding RelativeSource={RelativeSource Mode=Self}, 
           Path=Text, Mode=OneWay, Converter={StaticResource toUpperConverter}, 
           UpdateSourceTrigger=PropertyChanged}" /> 

...

class UpperConverter:IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      return value.ToString().ToUpper(); 
     } 
+0

매우 상상력이 접근

<TextBox CharacterCasing="Upper"></TextBox> 
. 나는 그것이 내 상황에서 효과가있을 것이라고 생각하지 않는다. 논리적으로 e.Key를 변경하고 Text 속성을 시각적으로 변경하지 않아야합니다. – BSalita

+0

내가보고 있지만, 뭔가를 놓치지 않는 한 위의 그림과 같은 변환기를 사용할 수 있으며 TextBox 자체에 바인딩하지 않으면 UpperStrokes가 될 값에 바인딩합니다. 물론 실제 키 스트로크를 편집 할 수는 있지만 과로 할 것 같은 생각이 든다. 구체적인 시나리오/샘플 및 가능한 코드를 게시 할 수 있습니까? – ThomasAndersson

-1

당신은 상단에 CharacterCasing을 설정할 수 있습니다.

MSDN Solution

+0

당신은 그 질문에 답한 것이 아니라 그 답을하셨습니다. – BSalita