如何将用户控件与Hover Button关联?

时间:2013-10-23 01:42:19

标签: c# xaml kinect

我有以下用户控件

<UserControl x:Class="Kimect.Controls.ElementControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Kimect"
             mc:Ignorable="d" Width="50" Height="50" SizeChanged="UserControl_SizeChanged">
    <Grid Name="mainGrid" MouseLeftButtonUp="element_MouseLeftButtonUp" Style="{StaticResource elementGrid}" >                
        <TextBlock Name="Number" Text="1" FontSize="15"  Margin="0 0 2 0" 
                   HorizontalAlignment="Right" VerticalAlignment="Top" />
        <TextBlock Name="symbol" Text="H"  FontSize="20"
                   HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Grid>
</UserControl>

现在我想用Kinect点击它。我研究并发现了KinectHoverButton.cs,但我不知道如何将用户控件与HoverButton相关联。我在使用Kinect SDK 1.7。

1 个答案:

答案 0 :(得分:0)

首先请注意,Kinect SDK 1.8是最新版本,并支持许多新功能。如果您可以更新到最新的SDK,我建议您查看它。其中的变化是你如何与按钮互动 - 用更直观的“按下”动作取代“悬停”。

对于您的KinectHoverButton,我假设您正在使用“ControlBasics-WPF”示例中的那个。

KinectHoverButtonKinectButtonBase的子类,它是常规ButtonBase类的子类。这是MSDN上ButtonBase类的链接: http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.buttonbase(v=vs.95).aspx

最后,从上面的链接中您会注意到ButtonBaseContentControl的子类:

public abstract class ButtonBase : ContentControl

...你可以把(几乎)任何东西都放在ContentControl

您不希望将UserControl撞到KinectHoverButton。相反,您想要创建一个看起来像KinectHoverButton的{​​{1}},并且在使用手势环境时应该表现得如此。如果要重复使用,可以创建仅包含UserControl UserControl的{​​{1}}。

举个简单的例子:

KinectHoverButton

...将创建一个启用了Kinect的按钮,该按钮看起来非常接近(您必须稍微使用样式)到现有的<KinectHoverButton> <Grid> <TextBlock Name="Number" Text="1" FontSize="15" Margin="0 0 2 0" HorizontalAlignment="Right" VerticalAlignment="Top" /> <TextBlock Name="symbol" Text="H" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" /> </Grid> </KinectHoverButton>