1

キャンバス内のラベルをキャンバスの右からキャンバスの左+ラベルのサイズまで無限にアニメーション化したいと思います。つまり、私のラベルは右側から来て、最後まで左側に移動し、再び繰り返されます。

これは私のxamlです:

        <Canvas Margin="0, 0, 0, 20" Name="CanMain2" Height="30" Width="350"  >
        <Label x:Name="LabelNameSong" Content="Hello" >
            <Label.Resources>
                <Storyboard x:Key="Scroll">
                    <DoubleAnimation To="{Binding ActualWidth, ElementName=LabelNameSong}" Duration="00:00:10"
          Storyboard.TargetProperty="(Canvas.Right)"
          Storyboard.TargetName="LabelNameSong"
          RepeatBehavior="Forever"/>
                </Storyboard>
            </Label.Resources>

            <Label.Triggers>
                <EventTrigger RoutedEvent="Label.Loaded">
                    <BeginStoryboard Storyboard="{StaticResource Scroll}" />
                </EventTrigger>
                <EventTrigger RoutedEvent="Label.SizeChanged">
                    <BeginStoryboard Storyboard="{StaticResource Scroll}" />
                </EventTrigger>
            </Label.Triggers>
        </Label>
    </Canvas>

アプリを起動するとすぐにクラッシュし、デバッガーは次のように言います:

「System.Windows.Media.Animation.DoubleAnimation」を使用して「System.Windows.Controls.Label」の「Right」プロパティをアニメーション化できません。詳細については、内部例外を参照してください。

私はxamlが初めてで、これを機能させることができないようです。

4

1 に答える 1

1

これは、Canvas.RightAttachedProperty、プロパティをLabel

を追加するAttachedPropertyLabel、プロパティが登録(添付)されるため、値をアニメーション化できますLabel

例:

  <Canvas Margin="0, 0, 0, 20" Name="CanMain2" Height="30" Width="350"  >
        <Label x:Name="LabelNameSong" Content="Hello" Canvas.Right="0" >
            <Label.Resources>
                <Storyboard x:Key="Scroll">
                    <DoubleAnimation To="{Binding ActualWidth, ElementName=LabelNameSong}" Duration="00:00:10"
          Storyboard.TargetProperty="(Canvas.Right)"
          Storyboard.TargetName="LabelNameSong"
          RepeatBehavior="Forever"/>
                </Storyboard>
            </Label.Resources>

            <Label.Triggers>
                <EventTrigger RoutedEvent="Label.Loaded">
                    <BeginStoryboard Storyboard="{StaticResource Scroll}" />
                </EventTrigger>
                <EventTrigger RoutedEvent="Label.SizeChanged">
                    <BeginStoryboard Storyboard="{StaticResource Scroll}" />
                </EventTrigger>
            </Label.Triggers>
        </Label>
    </Canvas>
于 2013-09-03T01:11:20.227 に答える