使用UserControl从MainWindow共享KeyHandler

时间:2015-10-02 21:51:28

标签: c# wpf user-controls

我有一个UserControl,目前有几个PreviewKeyDown事件监听器,我想将这些监听器移动到MainWindow,这样它们不仅可以在UserControl是活动焦点时工作,还有什么方法可以实现这个目的吗?

我在UserControl中拥有它们的原因是PreviewKeyDown事件的操作取决于在UserControl中选择的TabItem。

1 个答案:

答案 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>
相关问题