-2

私はコントロールテンプレートを持っています:

Image x:Name="image" Height="100" Width="100"/>
<ContentPresenter x:Name="content" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>

イベント クリックのコード ビハインド:

        var btn = sender as MultipointButton;
        var arg = e as MultipointMouseEventArgs;
        Storyboard sb = new Storyboard();
        ObjectAnimationUsingKeyFrames obj = new ObjectAnimationUsingKeyFrames();
        obj.BeginTime = TimeSpan.Zero;
        DiscreteObjectKeyFrame disobj = new DiscreteObjectKeyFrame();
        disobj.KeyTime = TimeSpan.FromSeconds(0.2);
        disobj.Value = CreateBitmapImage(Properties.Resources.SelectAnimation, 0, 0);
        obj.KeyFrames.Add(disobj);
        sb.Children.Add(obj);
        btn.Name = "image";
        this.RegisterName("image", btn);
        Storyboard.SetTargetName(obj, btn.Name);
        Storyboard.SetTargetProperty(obj, new PropertyPath(System.Windows.Controls.Image.SourceProperty));
        sb.Begin(this);
        this.UnregisterName("image");

しかし、アニメーションは機能しません。

4

1 に答える 1

1

わかりました、私はそれを修正しようとしました、そしてそれはRoney Michaelに感謝します. イベントクリックでコード完了:

    var btn = sender as MultipointButton;
    var arg = e as MultipointMouseEventArgs;

    Storyboard sb = new Storyboard();

    ObjectAnimationUsingKeyFrames obj = new ObjectAnimationUsingKeyFrames();

    DiscreteObjectKeyFrame disobj = new DiscreteObjectKeyFrame();
    disobj.KeyTime = TimeSpan.FromMilliseconds(0);
    disobj.Value = CreateBitmapImage(Properties.Resources.SelectAnimation, 0, 0); obj.KeyFrames.Add(disobj);

    obj.KeyFrames.Add(disobj);
    sb.Children.Add(obj);

    System.Windows.Controls.Image image = btn_menu.Template.FindName("image", btn) as System.Windows.Controls.Image;
    this.RegisterName(image.Name, image);

    Storyboard.SetTargetName(obj, image.Name);
    Storyboard.SetTargetProperty(obj, new PropertyPath(System.Windows.Controls.Image.SourceProperty));
    sb.Begin(this);
于 2013-06-12T13:04:38.033 に答える