C# Can';不能在类之间传递数据

C# Can';不能在类之间传递数据,c#,kinect,C#,Kinect,我正在使用winform开发基于VS2012的Kinect应用程序。在我尝试了几种方法之后,我仍然无法将值从一个类传递到另一个类 基本上我有三个类,一个公共MainWindow(),公共部分FaceTrackingViewer(),和公共SkeletonFaceTracker()。最后一个类位于FaceTrackingViewer()类中 在SkeletonFaceTracker()中,我有以下内容: public bool lastFaceTrackSucceeded { get; set;

我正在使用winform开发基于VS2012的Kinect应用程序。在我尝试了几种方法之后,我仍然无法将值从一个类传递到另一个类

基本上我有三个类,一个公共
MainWindow()
,公共部分
FaceTrackingViewer()
,和公共
SkeletonFaceTracker()
。最后一个类位于
FaceTrackingViewer()类中

在SkeletonFaceTracker()中,我有以下内容:

public bool lastFaceTrackSucceeded { get; set; }

internal void OnFrameReady(KinectSensor kinectSensor, ColorImageFormat colorImageFormat, byte[] colorImage, DepthImageFormat depthImageFormat, short[] depthImage, Skeleton skeletonOfInterest)
{
    // something else
    if (this.faceTracker != null)
    {
        this.lastFaceTrackSucceeded = frame.TrackSuccessful; //where it's set to be true.
        //something else
    }
}
我还尝试将第一行更改为:

public bool lastFaceTrackSucceeded;

public bool LastFaceTrackSucceeded
{
    get { return lastFaceTrackSucceeded; }
    private set { lastFaceTrackSucceeded = value; }
}
但我认为两者是一样的

在MainWindow()中,我有:

但是,即使
SkeletonFaceTracker()
中的
LastFaceTrackSucceed
LastFaceTrackSucceed
true
,bool FaceTrackSucceed
始终为
false
。我很困惑,不知道哪里出了问题

请注意,所有视频处理和面部跟踪操作都发生在
FaceTrackingViewer()
类中。我只想将一些参数和结构传递给
MainWindow()


首先感谢您

一件事-我假设您将变量
lastFaceTrackSuccessed
公开纯粹是为了测试目的。在您的示例中,定义属性的两种方法在功能上是相同的


我唯一能想到的另一件事是,您正在
SkeletonFaceTracker
的另一个实例上设置
LastFaceTrackSuccessed
true。您没有为我提供足够的代码来确定这一点,但如果您有两个(或更多)实例,则很容易将它们混淆。

您确定只有一个
SkeletonFaceTracker
实例?您没有显示字段设置为true的位置。是的,它在SkeletonFaceTracker()类中设置为true,但我没有在帖子中显示它。然后让我修改它。YotaXP询问将字段设置为true的
SkeletonFaceTracker
实例是否与
MainWindow
中的实例相同。在
MainWindow
中创建的
skeletonFaceTracker
是实际使用的吗?我想是的,我只有一个
skeletonFaceTracker
,并且只在
MainWindow
中将其作为一个实例。但是我不确定在
main窗口中创建的
skeletonFaceTracker
是否就是实际使用的。我的意思是,所有当前使用的数据结构都应该在
skelentonFaceTracker
类中,我只想在
MainWindow
类中从中获取一些值。但是我怎么能检查呢?我已经添加了一个片段,在其中我将LastFaceTrackSuccessed设置为true,即在函数内部void OnFrameReady。谢谢。正如你所指出的,我检查了SkeletonFaceTracker类,这是一个愚蠢的错误。谢谢你。
public partial class MainWindow : Window
{
    //some other irrelevant code snippets

    private FaceTrackingViewer.SkeletonFaceTracker skeletonFaceTracker = new FaceTrackingViewer.SkeletonFaceTracker();

    private void button_faceOnly_Click(object sender, RoutedEventArgs e)
    {
        bool faceTrackSucceeded = skeletonFaceTracker.lastFaceTrackSucceeded;
        // if I use the second structure in SkeletonFaceTracker(), it should be:
        // bool faceTrackSucceeded = skeletonFaceTracker.LastFaceTrackSucceeded;

        if (faceTrackSucceeded == true )
        {
             //do something
        }
    }
}