2014-04-07 89 views
0

我是編程C#和xaml的新手。我開始修改Microsoft Kinect的KinectExplorer-WPF解決方案,以便使其適用於我的目的。我修改了Kinect窗口來添加一個新面板,其中顯示了一系列圖像,這些圖像代表了站在Kinect前面的人員可以到達的某些位置。 這是我已經添加到KinectWindow.xaml的代碼:在KinectExplorer-WPF解決方案中不斷觸發事件

<StackPanel Orientation="Vertical" Grid.Row="1" Grid.RowSpan="2" Margin="0,10" HorizontalAlignment="Center" Width="400" > 
     <Grid Name="ExerciseViewerHost" Width="398" Height="645" Margin="0,0,0,0"> 
      <Grid Name="ExerciseVis" Background="{StaticResource DarkNeutralBrush}"> 
       <Viewbox Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center"> 
        <Image Name="Exerc" CommandManager.Executed="Change_Position" Margin="5 5 5 5" /> 
       </Viewbox> 
       <TextBlock x:Name="txtBox1" VerticalAlignment="Top" HorizontalAlignment="Center" FontSize="30" FontWeight="DemiBold" Text="{Binding TextBox1Text, ElementName=root}" TextAlignment="Center" Margin="36,105,36,0" Height="45" Width="328" /> 
      </Grid> 
     </Grid> 
    </StackPanel> 

「Change_Position」是達到參數時改變圖像(特別是最大計數器值)的情況下,它是在定義KinectWindow .xaml.cs作爲

private void Change_Position(object sender, EventArgs e)

,它是由一個DispatcherTimer每0秒

DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(Change_Position); dispatcherTimer.Interval = new TimeSpan(0, 0, 0); dispatcherTimer.Start();

觸發

我描述的代碼正常工作,但我的問題很簡單...有一個更「優雅」的方式來持續觸發此事件(不是使用計時器)? 有沒有人可以與我分享解決我的問題的代碼部分? 在此先感謝!

回答

0

您可以使用CompositionTarget.Rendering事件,每當WPF呈現場景時都會觸發該事件。不要忘記在不需要時解除事件處理程序,因爲它可能相當昂貴。

+0

感謝您的回答!它完美的工作! :) – user3506770

相關問題