내 Silverlight 4 DataGrid
컨트롤에서 키 누름에 사용자 지정 명령을 실행하는 매우 간단한 동작을 첨부하려고했습니다. 실제로는 Enter 키를 누를 때 DataGrid에서 선택한 항목을 커밋합니다. Silverlight KeyDown 이벤트 동작
에 GPRS 실제로 작동하는 동안
(내 코드를 볼 수 ...//.... in "OnAttached()..."
this.AssociatedObject.AddHandler(Control.KeyDownEvent, new KeyEventHandler(OnKeyDown), true);
private void OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
InvokeCommand();
}
}
...) 나는 데이터 그리드가 다음 행으로 키를 눌러 자체 진행을 입력하고 처리하는 것 같은 문제를 가지고있다. 분명히 잘못된 행은 커밋됩니다. 왜냐하면 키 프레스를 처리 할 때 행 선택 항목이 이미 변경 되었기 때문입니다.
<data:DataGrid
AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding Path=Data}"
SelectedItem="{Binding SelectedRow, Mode=TwoWay}">
<data:DataGrid.Columns>
<data:DataGridTextColumn Binding="{Binding A}" />
<data:DataGridTextColumn Binding="{Binding B}" />
<data:DataGridTextColumn Binding="{Binding C}" />
</data:DataGrid.Columns>
<i:Interaction.Behaviors>
<behaviors:EnterBehavior Command="{Binding CommitCommand}" />
</i:Interaction.Behaviors>
</data:DataGrid>
당신은 내가 기본 Enter 이벤트를 방지 할 수있는 방법을 말해 줄 수 : 여기
는 XAML입니까?
e.handled = true를 추가 할 수 있습니까? 그렇다면 어쩌면 도움이 될 것입니다. –
@Theun 가능합니다.하지만 이미 설정할 수있는 곳이 너무 늦었습니다. OnKeyDown이 호출되면 DataGrid에서 이미 처리/사용 된 것으로 보입니다. – thmshd