我在主窗口中有一個「ContentControl」的WPF應用程序,它有一個樹形視圖,菜單和一個數據網格。當我做文件打開時它們被填充。快捷鍵問題 - 有時不工作 - 焦點問題?
我花了大約一天的時間試圖讓鍵綁定工作。綁定在用戶控件中,但我讀過(http://blogs.southworks.net/geoff/2011/03/15/wpfshortcutkeys/),除非您將它放在主窗口中(這是一個簡單的應用程序),否則您可能會遇到問題。
所以今天我在主窗口中放了一個測試命令。這有點更好 - 當我啓動應用程序但在使用File-Open(或其他操作)後,快捷方式會停止。我使用了「Snoop」,可以看到焦點沒有設置爲任何元素 - 當它不工作時它是「空」,但是在啓動時它也是「空」,當它工作時。
當我點擊快捷鍵時,「Snoop」在事件選項卡中沒有顯示任何內容。如果我點擊某個控件以使某個焦點處於焦點狀態,則該事件再次出現。
這就好像有東西得到了不應該的焦點。
我在主窗口中的一些文字書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的代碼來得到它!)
任何提示?
謝謝。
彼得
手動設置聚焦手動嗎? – Code0987
@彼得史密森,做了這個後,你打開文件對話框後,在Window.xaml.cs中的焦點()。 –