2017-07-21 17 views
0

これで、DataTemplateを持つGridViewとBindingに設定されたItemSourceがあります。 GridViewは完全に配置されており、問題はありません。GridViewに定義されたStoryBoard GridViewItemの特定のインスタンスのDataTemplate

次のように私の問題は、DataTemplateを

  • Aフライアウトは、GridViewの商品(作品)の単純なリストビューを示す表示されている内部

    1. ユーザがリストビューアイテムをタップ
    2. 画像をタップでありますフライアウト内で
    3. ListViewアイテムに一致するGridViewアイテムが更新されます(正常に動作します)
    4. StoryBoardを起動する必要があります(動作しません)

    考えられるのは、1人のプレイヤーが他のプレイヤーを攻撃し、攻撃されたプレーヤーでアニメーションを開始したいと考えていますが、(送信者)を使用して攻撃するプレーヤーにのみアクセスできます。

    ストーリーボードはGridViewItem DataTemplate内で定義されていますが、GridViewItemが送信者と.Find()を使用してタップされている場合はアクセスできますが、これは使用できません。タップ

    私は、ストーリーボードはGridViewItemバインディングで使用されるクラスの内部に記述できると思っていましたか?どのようにこれが行われるのですか?

    DataTriggerを使用することもできますが、チェックしたい値とintを減らす場合に使用できますか?

  • +3

    を働いていましたか? –

    +0

    私は今、違う方向で開発者を連れてきましたが、将来の参照のために知りたいと思います。 ストーリーボードを、実行されているものとは異なるオブジェクトインスタンスでトリガーしますか? 私が知っている.FindNameと.Resourcesはうまくいかないでしょうか? –

    答えて

    0

    DataTemplateの内部に定義されているStoryboardを取得するには、.Resources["MyStoryboard"] as Storyboardを使用します。また、ContainerFromIndexを使用して、インデックスから項目を取得します。ここで

    は、今あなたが欲しい、これまでときStoryboardを開始するためにStartStoryboard(index)を使用することができますコードサンプル

    private void StartStoryboard(int index) 
    { 
        var MyGridViewItem = MyGridView.ContainerFromIndex(index); 
        Storyboard MyStoryboard = MyGridViewItem.Resources["MyStoryboard"] as Storyboard; 
        MyStoryboard.Begin(); 
    } 
    

    の背後にあるコードで

    XAML

    <DataTemplate> 
        <Grid Name="MyGrid"> 
         <Grid.Resources> 
          <Storyboard x:Name="MyStoryboard"/> 
         </Grid.Resources> 
         .... 
        </Grid> 
    </DataTemplate> 
    

    です。 FindControl関数を使用して、類似した問題の協議上記

    +0

    これを使用して質問に答える方法を説明してください - タップされていない(送信者ではない)GridViewItemのストーリーボードにアクセスしますか? –

    +0

    @ Sam.Pain私の答えはあなたのケースで正しく動作します。私は説明を加えました。 –

    +0

    こんにちは私は項目が読み込まれたり追加されたときにストーリーボードは必要ありません。ちょうど一般的なので、5のうち3番目の項目になる可能性があります。 –

    関連する問題