我有一个UserControl,目前有几个PreviewKeyDown事件监听器,我想将这些监听器移动到MainWindow,这样它们不仅可以在UserControl是活动焦点时工作,还有什么方法可以实现这个目的吗?
我在UserControl中拥有它们的原因是PreviewKeyDown事件的操作取决于在UserControl中选择的TabItem。
答案 0 :(得分:0)
您可以在MainWindow级别以及KeyDown和UserControl级别处理PreviewKeyDown。但最好是处理容器级别的预览事件,如Grid / StackPanel等。因为在Window级别,将从各种控件中获得许多预览事件。
<Window x:Class="WpfUserControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:WpfUserControl"
Title="MainWindow" Height="605.263" Width="701.316" PreviewKeyDown="Window_PreviewKeyDown">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="103*"/>
<RowDefinition Height="217*"/>
</Grid.RowDefinitions>
<uc:UserControl1 Background="Aqua"/>
</Grid>
</Window>