주 창에 "ContentControl"이있는 WPF 응용 프로그램이 있으며 트리 뷰, 메뉴 및 데이터 격자가 있습니다. File-Open 할 때 채워집니다.바로 가기 키 문제 - 때때로 작동하지 않음 - 초점 문제가 있습니까?
키 바인딩 작업을 시도하는 데 약 하루를 보냈습니다. 바인딩은 사용자 정의 컨트롤에 있지만 당신이 주 창에 넣지 않으면 문제가 될 수있는 (http://blogs.southworks.net/geoff/2011/03/15/wpfshortcutkeys/)을 읽었습니다 (이것은 제가 갖고있는 간단한 응용 프로그램입니다).
그래서 오늘 주 창에 테스트 명령을 입력했습니다. 조금 더 좋습니다. 바로 가기는 앱을 시작할 때 작동하지만 파일 열기 (또는 다른 작업)를 사용한 후에는 멈 춥니 다. 나는 "Snoop"을 사용했고 포커스가 어떤 요소에도 설정되어 있지 않다는 것을 알 수 있습니다. 작동하지 않을 때는 "null", 작동 할 때는 "null"로 시작합니다.
"스눕"은 바로 가기 키를 눌렀을 때 이벤트 탭에 아무 것도 표시하지 않습니다. 무언가가 초점을 갖도록 컨트롤을 클릭하면 이벤트가 다시 나타납니다.
마치 뭔가가 초점을 맞추는 것처럼 말입니다.
나는 메인 창에서 텍스트 책 XAML의 비트가 - (! 어딘가에 인터넷을 내려서)
<Window ... Height="400" Width="772" Focusable="False" IsTabStop="False">
<Window.Resources>
<DataTemplate DataType="{x:Type vm:MainWindowContentViewModel}">
<local:MainWindowContent/>
</DataTemplate>
</Window.Resources>
<Window.CommandBindings>
<CommandBinding Command="Close"
CanExecute="CloseCanExecute"
Executed="CloseExecuted" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="A"
Modifiers="Control"
Command="Close" />
</Window.InputBindings>
<ContentControl x:Name="_contentControl"/>
</Window>
코드 뒤에 또한 매우 지루합니다. 내 명령의 대부분의 다른 합병증이있다
private void HelpCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
e.Handled = true;
}
private void HelpExecuted(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Hey, I'm some help.");
e.Handled = true;
}
는 ICommand의 물건을 사용하지만 나는 시도하고 초점과 같은 문제를 가지고 사물을 단순화하기 위해이 간단한 도움말 명령을 추가했습니다. (나는 코드를 사용하여 Keybinding a RelayCommand을 얻습니다.)
힌트 : 어떤 힌트가 있습니까?
감사합니다. 이 기본 사실과는 스타일/ControlTemplate이 없기 때문에 포커스가있을 때 볼 수 없습니다 -
베드로는
포커스 수동 설정이 작동합니까? – Code0987
@Peter Smithson, 파일 대화 상자를 연 후 Window.xaml.cs에서 this.Focus()를 수행 한 후에 작동 했습니까? –