如何将网格上的画布链接到mainwindow.xaml?

时间:2011-12-13 11:00:45

标签: c# wpf

我在网格中有一个画布,我想将画布保留在该网格上,因为它是第一个在我的程序中打开的窗口。

在我的MainWindow.xaml中,我有ContentPage,它总是更改其内容,启动内容是authenticationPage。在这个页面中,我有Canvas显示我的骨骼跟踪,并用于制作手势。这个gestureCanvas位于authenticationPage。这个gestureCanvas背后的代码在我的MainWindow.xaml.cs上。

我需要将gestureCanvas与我的MainWindow.xaml.cs相关联,因为代码位于MainWindow后面,并且会在那里使用,因为它会在那里使用一个Kinect应用程序。

如何链接这些?

partial class MainWindow
{
    void LoadCircleGestureDetector()
    {
        using (Stream recordStream = File.Open(circleKBPath, FileMode.OpenOrCreate))
        {
            circleGestureRecognizer.TraceTo(gesturesCanvas, Colors.Red);
        }
    }
 }

这是我的authenticationPage

         <UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:smartHome2011"
xmlns:MyUserControl="clr-namespace:MyUserControl;assembly=MyUserControl"
mc:Ignorable="d"
x:Class="smartHome2011.AuthenticationPage"
x:Name="UserControl"
d:DesignWidth="640" d:DesignHeight="480">

<Grid x:Name="LayoutRoot">
         <Grid x:Name="kinectGrid" HorizontalAlignment="Left">
            <Viewbox Margin="204,220,430,220">
                <Grid ClipToBounds="True" Margin="204,220,430,220">
                    **<Canvas x:Name="gesturesCanvas" />**
                    <Canvas x:Name="kinectCanvas"></Canvas>
                </Grid>
            </Viewbox>
        </Grid>
    </Grid>

1 个答案:

答案 0 :(得分:1)

在MainWindow后面的代码中,您可以尝试以下

var gesturesCanvas = YourContentPage.FindName("gesturesCanvas") as Canvas;
if (gesturesCanvas != null) {
  // do something
}

希望这会有所帮助