【问题标题】:Storyboard not available in codebehind故事板在代码隐藏中不可用
【发布时间】:2011-05-23 00:38:19
【问题描述】:

为什么我在使用 WPF 时无法访问情节提要。在 Silverlight 中,完全相同的代码可以工作。

VB 代码隐藏

Public Class UserControl1

    Private Sub UserControl1_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles Me.MouseLeftButtonDown
        Me.storyboardBlend.Begin()
    End Sub
End Class

XAML:

 <UserControl x:Class="UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>

        <Image x:Name="imgOn" Source="/OUTPUT%20-%20WPF01;component/Images/Disk.png" />
        <Grid.Resources>
            <Storyboard x:Key="storyboardBlend" x:Name="storyboardBlend">
                <DoubleAnimation x:Name="AnimationOpacityOn" Storyboard.TargetName="imgOn" Storyboard.TargetProperty="Opacity" Duration="0:0:1.500" To="1" />
            </Storyboard>

        </Grid.Resources>
    </Grid>
</UserControl>

【问题讨论】:

    标签: vb.net xaml animation storyboard code-behind


    【解决方案1】:

    使用字符串作为键现在适用于情节提要。但是我仍然无法访问下一步的动画参数。

    XAML 部分:

                <Grid.Resources>
                <Storyboard x:Key="storyboardBlend" x:Name="storyboardBlend">
                    <DoubleAnimation x:Name="AnimationOpacityOn" Storyboard.TargetName="imgOn" Storyboard.TargetProperty="Opacity" Duration="0:0:1.500" To="1" />
                    <DoubleAnimation x:Name="AnimationOpacityOff" Storyboard.TargetName="imgOff" Storyboard.TargetProperty="Opacity" Duration="0:0:1.500" To="1" />
                    <DoubleAnimation x:Name="AnimationOpacitOnGlow" Storyboard.TargetName="imgOnGlow" Storyboard.TargetProperty="Opacity" Duration="0:0:1.500" To="1" />
                </Storyboard>
    
            </Grid.Resources>
    

    Hack in Codebehind 不起作用:

    Private _Checked As Boolean
    Public Property Checked As Boolean
        Get
            Return _Checked
        End Get
        Set(ByVal value As Boolean)
            _Checked = value
    
            Dim storyboard As Storyboard = LayoutTextImage.Resources("storyboardBlend")
            storyboard.Stop()
            If _Checked = True Then
    
                Dim Anim As DoubleAnimation
                Anim = storyboard("AnimationOpacityOn")
                Anim.To = 1
    
                Anim = Me.FindResource("AnimationOpacityOff")
                Anim.To = 0
    
                Anim = Me.FindResource("AnimationOpacityOnGlow")
                Anim.To = 1
    
    
                'Dim storyboard As Storyboard = Me.FindResource("storyboardBlend")
                storyboard.Begin()
    
            Else
                Dim Anim As DoubleAnimation
                Anim = Me.FindResource("AnimationOpacityOn")
                Anim.To = 0
    
                Anim = Me.FindResource("AnimationOpacityOff")
                Anim.To = 1
    
                Anim = Me.FindResource("AnimationOpacityOnGlow")
                Anim.To = 0
    
                storyboard.Begin()
    
            End If
        End Set
    End Property
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2020-05-19
      • 2015-04-05
      • 2021-04-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多