2014-07-11 5 views
1

ShowDialog()을 사용하는 대화 상자로 다른 WPF 창을 여는 WPF 창 (.NET 4.0)이 있습니다. 그 대화 창에서 저장 및 취소 바로 가기를 각각 저장하고 취소하기 위해 alt + S와 alt + C를 연결하는 저장 및 취소 단추가 있습니다.WPF AccessText For Alt Only For

디자이너의 밑줄 뒤에 오는 문자에 대한 단추의 밑줄을 표시하는 단추에 AccessText 요소가 있습니다. 사용자가 Alt 키를 누르면 작동합니다. 또한 사용자가 액세스 키를 누르면 바로 가기가 작동합니다. 고도없이

  • 액세스 키 작품 :

    그러나, 여기에 문제가 있습니다. 대화 상자가 열리 자마자 S 또는 Calt 및 버튼 클릭 이벤트 발생없이 누르면됩니다. 포커스가 입력 컨트롤 (즉, 텍스트 상자)에 있으면 alt 만 사용하면됩니다. 그러나 폼에 포커스가있을 때만 액세스 키가 alt로 작업하기를 원합니다.

  • 처음으로 alt 키를 누르면 입력 컨트롤 (즉, 텍스트 상자)을 입력하지 않으면 밑줄이 단추 텍스트에 영원히 표시됩니다. 다시 alt 키를 누르면 숨길 것이라고 예상했을 것입니다. WPF의 경우 정상입니까? 대화 창에서 XAML 여기

    private void Button_Click(object sender, RoutedEventArgs e) 
        { 
         var w = new DialogWindow(); 
         w.ShowDialog(); 
        } 
    

    됩니다 : 여기

    <Window x:Class="WpfApplication2.DialogWindow" 
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
          Title="Window1" Height="122" Width="330" Topmost="True"> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto" /> 
           <RowDefinition Height="Auto" /> 
          </Grid.RowDefinitions> 
    
          <StackPanel Orientation="Horizontal"> 
           <TextBlock Text="Some Setting:" Margin="10"/> 
           <TextBox Width="200" Margin="2" /> 
          </StackPanel> 
    
          <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right"> 
           <Button Name="btnSave" Margin="10,10,5,10" Width="100" Height="25" Click="btnSave_Click" > 
            <StackPanel Orientation="Horizontal"> 
             <Image Source="pack://siteoforigin:,,,/save_16xLG.png" /> 
             <AccessText Text="_Save" /> 
            </StackPanel> 
           </Button> 
           <Button Name="btnCancel" Margin="5,10,10,10" Width="100" Height="25" Click="btnCancel_Click"> 
            <StackPanel Orientation="Horizontal"> 
             <Image Source="pack://siteoforigin:,,,/action_Cancel_16xLG.png" /> 
             <AccessText Text="_Cancel" /> 
            </StackPanel> 
           </Button> 
          </StackPanel> 
         </Grid> 
        </Window> 
    

    코드는 대화를위한 뒤에 여기있다

메인 창에서 대화 상자를 호출하는 코드입니다 창 :

public partial class DialogWindow : Window 
    { 
     public DialogWindow() 
     { 
      InitializeComponent(); 
     } 

     private void btnCancel_Click(object sender, RoutedEventArgs e) 
     { 
      this.DialogResult = false; 
      this.Close(); 
     } 

     private void btnSave_Click(object sender, RoutedEventArgs e) 
     { 
      this.DialogResult = true; 
      this.Close(); 
     } 
    } 

답변

0

ALT을 누르면 숨기지 않습니다. 포커스가 다른 컨트롤로 변경되면 숨 깁니다.

텍스트 상자 중 하나에 포커스가 없으면 단추에 중점을 둡니다. 의도적으로 WPF는 Alt을 누르지 않아도 포커스가 Button에있을 때 바로 가기 키에 응답합니다.

것은 해결 방법이 대답을 참조하십시오

Access key getting selected even we did not press 'Alt' key in WPF

+0

나는 두 번째 텍스트 상자를 추가했는데, 마우스 클릭을 통해 다른 하나의 제어에서 초점을 전환하지만 통해 초점을 전환 할 때 밑줄 숨기 않습니다 탭 이동은 효과가 없습니다. 또한 텍스트 상자 중 하나에 포커스가없는 경우 ALT를 눌렀는지 여부에 관계없이 'S'또는 'C'를 누르면 폼이 즉시 닫힙니다. – Avery

+0

해결 방법에 대한 링크가 액세스 키 방지에 필요한 대답을 제공합니다. ALT를 누르지 않으면 작동하지 않습니다. 감사합니다! – Avery