2016-05-03 16 views
-1

ユーザコントロールにボタンがboolプロパティをtrueに、そしてfalseの直後を1つのフレームのように変える方法はありますか?usercontrol button bang on press

<Button x:Name="Button" Click="Button_Click"/> 

私はそれが解決策ではないもちろんのが、これをしようとしている:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    BeatReset= true; 
    BeatReset= false; 
} 
+2

'BeatReset'設定が' PropertyChanged'または同様のイベントであると仮定すると、それは動作します。しかし、WPFは実際には「フレーム」という言葉では機能しませんので、これで何を達成したいのかははっきりしません。実際に解決しようとしている問題は何ですか? –

+0

BeatReset = trueの場合、プロパティはtrueのままです。しかし、私はすぐにUserControlコード内でfalseに戻す方法を見つけることができません。 – lecloneur

+0

'ButtonReset = false;'はすぐにそれをfalseに戻します(あなたのプロパティーセッターが何か非常に奇妙なことをしていない限り)。あなたはそれが働いていないと思いますか? –

答えて

0

はい。ボタンクリックでtrueに設定し、必要に応じて1フレーム後にfalseに設定し、CompositionTarget.Renderingイベント を使用して、コンポジションツリーのオブジェクトがレンダリングされる直前に発生させることができます。すなわち1フレームにつき1回である。

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    BeatReset= true; 
    CompositionTarget.Rendering += Rendering; 
} 

private void Rendering(object sender, EventArgs e){ 
    BeatReset = false; 
    CompositionTarget.Rendering -= Rendering; 
} 

だから、次のフレームでfalseにBeatResetセットをキューイングし、作業が完了した直後にイベントハンドラを取り除きます。

関連する問題