2011-03-14 1 views
0

저장과 같은 여러 기능에 대한 액세스 키 바로 가기를 제공해야합니다. 이렇게하려면 LayoutRoot라는 그리드 인 루트 객체의 KeyUp 이벤트 (일반적으로 Silverlight UserControl 또는 Page에서 기본적으로 생성 된)를 처리하여 시작했습니다. 이 때문에 나는 Windows 키를 사용하고Silverlight 액세스 키 바로 가기

 private void LayoutRoot_KeyUp(object sender, KeyEventArgs e) 
     { 
      switch (e.Key) 
      { 
       case Key.S: 
        if ((Keyboard.Modifiers & ModifierKeys.Windows) == ModifierKeys.Windows) 
        { 
         e.Handled = true; 
         // save 

        } 
        break; 

       case Key.C: 
        if ((Keyboard.Modifiers & ModifierKeys.Windows) == ModifierKeys.Windows) 
        { 
         e.Handled = true; 
         // clear fields 

        } 
        break; 

      } 
     } 

:

(그것은 확인을 것 같다, 그래서이 UI 상호 작용이다) 나는 MVVM 패턴을 사용하고 있지만 내가 같은 뒤에 코드에 코드를 추가 한 내가 아는 한 그것을 사용하는 브라우저에는 쇼케이스가 없다.

명령을 사용하여 저장 버튼에 저장 기능을 구현하므로 MVVM 패턴을 유지 관리합니다. 예 : XAML에서

public RelayCommand CommandSavePtr { get; private set; } 
CommandSavePtr = new RelayCommand(OnSavePtr); 
private void OnSavePtr() 
{ 
    .... 

: -

<Button x:Name="SavePtrButton" 
         Command="{Binding CommandSavePtr}" 
         Style="{StaticResource StandardButtonStyle}" 
         IsEnabled="{Binding Ptr.HasErrors, Converter={StaticResource NotOperatorValueConverter}}"> 
        <StackPanel Orientation="Horizontal"> 
         <Image Source="/G4SPrisonerEscorting_ResourceDictionaries;component/images/accept.png" Style="{StaticResource SubPanelIconStyle}"/> 
         <TextBlock Text="Save"/> 
        </StackPanel> 
</Button> 

내 문제는 지금은 내 위의 KeyUp 이벤트에서 뷰 모델로 의사 소통을하는 것은 클릭하면 perfomed 동일한 저장 기능을 수행하는 방법을 모르는 것입니다 저장 버튼.

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

BTW 나는 GalaSoft의 MVVM Light를 사용하여 Commanding을하고 있습니다.

답변

1

이것은 오래된 질문이지만 다른 누군가가 같은 문제에 걸린다면 어쨌든 대답 할 것이라고 생각했습니다.

다음과 같은 방법으로 코드 숨김에서 버튼의 명령을 발사 할 수 있어야한다 :

SavePtrButton.Command.Execute(SavePtrButton.CommandParameter);