개발자국/WPF / Expression
[WPF] Key Event of "Enter" in MVVM Model Command (Using InputBindings)
알 수 없는 사용자
2012. 9. 16. 22:55
WPF 에서 MVVM 모델을 통해 코딩을 하고 있다.
TextBox 혹은 Editable ComboBox 등등에서 키를 입력하면,
Command를 날려주는데, KeyUp Event를 많이 사용했다.
Enter Key에서만 Command가 발생해야할 상황이 많은데,
Binding과 Command를 사용한 MVVM 에서는 이것이 Enter인지를 알 수 가 없었다!!
이 때, 검색을 하던 중 "InputBindings" 라는 개념을 찾았다!! olleh~
<ComboBox Grid.Row="1" Margin="3" Name="ValueListComboBox" IsEditable="True" ItemsSource="{Binding SearchWordList}" Text="{Binding SelectedSearchWord[0]}" > <ComboBox.InputBindings> <KeyBinding Key="Enter" Command="{Binding EnterSearchWord}"></KeyBinding> </ComboBox.InputBindings> <i:Interaction.Triggers> <!--<i:EventTrigger EventName="KeyUp"> <cmd:EventToCommand Command="{Binding EnterSearchWord}"/> </i:EventTrigger>--> <i:EventTrigger EventName="SelectionChanged"> <cmd:EventToCommand Command="{Binding EnterSearchWord}"/> </i:EventTrigger> </i:Interaction.Triggers> </ComboBox>
자, 코드를 살펴 보면, ComboBox가 존재하고, 얘는 Editable 하단다.
Text가 어딘가에 바인딩이 되어있다.
원래대로면 Interaction Trigger를 이용해서 "KeyUp" Event에 Command를 발생시켰더랬다.
이랬더니 얘가 Enter 키를 쳤는지 도무지 알 방법이 없다.
수정된 부분은 <ComboBox.InputBindings></ComboBox.InputBindings>부분이다.
KeyBinding 이란걸 Enter 로 잡아서 Command를 발생시킬 수 있다.
이걸 왜 몰랐지!!