2013-06-28 48 views
1

我是WPF和c#的初學者。我嘗試使用Kinect for Windows創建應用程序。我在我的Kinect.cs中有一個kinectsensorchooser,它控制着MainWindow.xaml中的SensorChooser,但我不確定如何控制它。
我的代碼如下:如何訪問另一個cs文件中xaml文件上的KinectSensorchooser對象?

MainWindow.xaml

<Canvas> 
<k:KinectSensorChooserUI KinectSensorChooser="{Binding SCkinectSensorChooser} "Name="sensorChooserCP"/> 
<k:KinectUserViewer k:KinectRegion.KinectRegion="{Binding kinectRegionCP}"/> 
<k:KinectRegion Name="kinectRegionCP" KinectSensor="{Binding ElementName=SCkinectsensor}"> 
<Grid> 
some kinect tile buttons come in here... 
</Grid> 
</k:KinectRegion> 
</Canvas> 

Kinect.cs

public KinectSensor SCkinectsensor; 
public KinectSensorChooser SCkinectSensorChooser; 

的兩個對象的值將動態程序執行期間設置。我想反映在主窗口

的App.xaml

<Application x:Class="Kinect.App" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
StartupUri="MainWindow.xaml" 
xmlns:local="clr-namespace:Kinect"> 
<Application.Resources> 
<local:Kinect x:Key="Kinect" /> 
</Application.Resources> 

我做錯了什麼,代碼沒有響應,我想......我該怎麼辦這些變化?我需要幫助

回答

1

您是否在主窗口中設置DataContext?如果沒有,你的Binding什麼都不會做。

MainWindow.xaml

<Window x:Class="Kinect.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     DataContext="{StaticResource Kinect}"> 
... 
</Window> 

另外一點需要注意的是,在WPF中,你只能綁定到性能

Kinect.cs

public KinectSensor SCkinectsensor { get; private set; } 
public KinectSensorChooser SCkinectSensorChooser { get; private set; } 

如果您希望這些屬性之外改變構造函數,那麼這個類需要實現INotifyPropertyChanged,和你的屬性應該是這樣的:

private KinectSensor kinectSensor; 
public KinectSensor SCkinectSensor 
{ 
    get { return kinectSensor; } 
    set 
    { 
     kinectSensor = value; 
     PropertyChanged(this, new PropertyChangedEventArgs("SCkinectSensor"); 
    } 
} 
相關問題