C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: WPFでStoryboardの終了後にイベント通知をあげる


(過去ログ 85 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■51029 / inTopicNo.1)  WPFでStoryboardの終了後にイベント通知をあげる
  
□投稿者/ まぐねしうむ (97回)-(2010/06/23(Wed) 17:53:11)

分類:[C#] 

2010/06/23(Wed) 17:53:51 編集(投稿者)
2010/06/23(Wed) 17:53:42 編集(投稿者)

<pre><pre>お世話になります。
VS2010+Blend4でWPFウインドウアプリを作成しています。
ユーザコントロール内に設定されたStoryboardの終了後
メインウインドウにアニメーション終了通知を送るような方法をさがしています。
どなたかやり方や参考となるHP等をご存知でしたらおしえてください。

Window上にユーザコントロールを配置し、
Windowとユーザコントロール内にボタンを配置してあります。
動き的にはWindowに配置したボタンを押すことにより、ユーザコントロール上の
ボタンサイズが変化するようになっています。

//メインウインドウ
private void button1_Click(object sender, RoutedEventArgs e)
{
this.userControl11.Hide();
MessageBox.Show("OK");
}

//ユーザコントロール
public void Hide()
{
//例えば再生に10秒かかるStoryboard
Storyboard story = (Storyboard)FindResource("UC_Hide");
story.Begin();
}

このままだと、メインウインドウのボタンを押した瞬間にMsgBoxが表示されてしまいます。
これを、Storyboardが終わった段階でMsgboxを表示するようにしたいのですが・・・・

よろしくお願いします。</pre></pre>
引用返信 編集キー/
■51032 / inTopicNo.2)  Re[1]: WPFでStoryboardの終了後にイベント通知をあげる
□投稿者/ Hongliang (653回)-(2010/06/23(Wed) 19:36:43)
Storyboard に普通にイベントがありますが?
引用返信 編集キー/
■51073 / inTopicNo.3)  Re[2]: WPFでStoryboardの終了後にイベント通知をあげる
□投稿者/ まぐねしうむ (98回)-(2010/06/24(Thu) 11:44:40)
No51032 (Hongliang さん) に返信
> Storyboard に普通にイベントがありますが?
調べてみました。
Completedイベントですね。

//ユーザコントロール側
Storyboard story = null;
void story_Completed(object sender, EventArgs e)
{
            //メインウインドウ側に通知?
}
       
public void Hide()
{
      story = (Storyboard)FindResource("UC_Hide");
            story.Completed += new EventHandler(story_Completed);
            story.Begin();
}

ただ、これだとメインウインドウ側のボタン処理のMsgboxが相変わらず押された直後に表示されますよね?
(呼び出し元とは別の個所のメインウインドウでUCからの処理を捕まえる?)

たとえば、ウインドウを閉じる処理とかで、子のUCをフェードアウト後、親のウインドウをフェードアウトする
といった、異なるオブジェクト間で異なるStoryboardを連鎖的に再生したいと考えています。
WPFの仕組みを理解できていないので、勘違いしているのだと思うのですがメイン側でbutton1_Clickのイベントとは
別に、UCからの変更の通知を受け取るメソッドを作成することになるのでしょうか?

何か根本的考え方がに間違っている気がするのですが・・・

引用返信 編集キー/
■51077 / inTopicNo.4)  Re[3]: WPFでStoryboardの終了後にイベント通知をあげる
□投稿者/ Hongliang (655回)-(2010/06/24(Thu) 13:10:38)
UserControl に Hidden イベントを用意して、Storyboard.Completed イベントでその Hidden イベントを発生させるとかそんなんです。
引用返信 編集キー/
■51078 / inTopicNo.5)  Re[4]: WPFでStoryboardの終了後にイベント通知をあげる
□投稿者/ まぐねしうむ (99回)-(2010/06/24(Thu) 13:26:48)
No51077 (Hongliang さん) に返信
> UserControl に Hidden イベントを用意して、Storyboard.Completed イベントでその Hidden イベントを発生させるとかそんなんです。
こんなかんじでしょうか?

//ユーザコントロール側
void story_Completed(object sender, EventArgs e)
{
this.Visibility = Visibility.Hidden;
}

Storyboard story = null;
public void Hide()
{
//非表示
story = (Storyboard)FindResource("UC_Hide");
story.Completed += new EventHandler(story_Completed);
story.Begin();

story = null;
}

//メインフォーム側
private void userControl11_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
//非表示
story = (Storyboard)FindResource("Main_Hide");
story.Completed += new EventHandler(story_Completed);
story.Begin();
}
void story_Completed(object sender, EventArgs e)
{
this.Close();
}
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -