我的WPF UserControl在WinForm表单中托管时不会收到输入

时间:2011-06-30 15:19:31

标签: wpf winforms events elementhost

我已经在WinForms表单中添加了一个WPF用户控件,但是我无法在WPF控件上接收事件。

我尝试订阅MouseEnter事件,但从不调用事件处理程序方法。 我正在使用Visual Studio(2010 Express版)设计器添加WPF控件。我添加了一个ElementHost,然后将我的控件与主机关联。

以下是表单的截图:

enter image description here

WPF控件是工具条下面的帮助广告。控件末尾有一个链接,当添加到winform elementhost时,不会收到任何输入事件。

以下是组件的xaml代码:

<UserControl x:Class="Telbit.TeStudio.View.Forms.HelpAd"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="30" Width="500"
x:Name="HelpAdControl"
Background="#FFD3DCE6"
BorderBrush="#FFB9C4D2"
BorderThickness="0 0 0 1">
<Grid>
        <StackPanel Orientation="Horizontal">
        <Image Name="icnHelpAd"
           HorizontalAlignment="Center" VerticalAlignment="Center"
           Visibility="{Binding ElementName=HelpAdControl, Path=HasIcon}"/>
        <TextBlock Name="txtHelpType" Margin="5 0 0 0"
               Visibility="{Binding ElementName=HelpAdControl, Path=HasType}"
               Text="{Binding ElementName=HelpAdControl, Path=HelpType}"
               TextBlock.FontFamily="Verdana" TextBlock.FontSize="10" FontWeight="Bold" Foreground="#FF939FBB"
               VerticalAlignment="Center" />
        <TextBlock Name="txtHelpDescription" Margin="5 0 0 0"
               Visibility="{Binding ElementName=HelpAdControl, Path=HasDescription}"
               Text="{Binding ElementName=HelpAdControl, Path=HelpDescription}" 
               TextBlock.FontFamily="Verdana" TextBlock.FontSize="10" Foreground="#FF444444"
               VerticalAlignment="Center" />
        <TextBlock Name="lblHelpLink" VerticalAlignment="Center" Margin="5 0 0 0">
            <Hyperlink Name="lnkHelpLink" 
                       TextBlock.FontFamily="Verdana" TextBlock.FontSize="10" Foreground="#FF255BC8"
                       Click="lnkHelpLink_Click" NavigateUri="{Binding ElementName=HelpAdControl, Path=HelpKey}">
                <TextBlock Text="{Binding ElementName=HelpAdControl, Path=HelpLinkDescription}" />
            </Hyperlink>
        </TextBlock>
        <TextBlock Name="lblNextHelp" 
                   Margin="5 0 0 0" Width="16" VerticalAlignment="Center" HorizontalAlignment="Right" ToolTip="Next Help Tip" 
                   TextBlock.FontFamily="Verdana" TextBlock.FontSize="10">
            <Hyperlink Name="lnkNextHelp" Click="lnkNextHelp_Click" NavigateUri="www.mock.com">
                »
            </Hyperlink>
        </TextBlock>


    </StackPanel>
</Grid>

另一个注意事项:当鼠标悬停在链接组件上时,鼠标光标不会更改。在我看来,事件没有被发送到WPF控件。

任何想法都可能导致这个问题?

1 个答案:

答案 0 :(得分:2)

这让我想起了我前段时间与winforms&lt;&gt; wpf interop相关的非常奇怪的问题。 请看看这是否可以帮到你:

WPF WinForms Interop issue with Enable / Disable

祝你好运!