绑定内容

时间:2015-11-11 23:18:29

标签: wpf animation wcf-binding

请不要被代码的大小吓倒。它是一个非常小的用户控件。

此用户控件应该在其中挥动文本(选框):

<UserControl x:Class="WpfTest.Marquee"
             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" 
             xmlns:local="clr-namespace:WpfTest"
             mc:Ignorable="d" 
             d:DesignHeight="25" d:DesignWidth="50">
    <UserControl.Resources>
        <Storyboard x:Key="Storyboard1" AutoReverse="True" RepeatBehavior="Forever">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="label">
                <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
                <EasingDoubleKeyFrame KeyTime="0:0:2" Value="-100"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>

    </UserControl.Resources>
    <UserControl.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
        </EventTrigger>
    </UserControl.Triggers>
    <Grid Width="50">
        <StackPanel Width="1000">
            <Label x:Name="label"   
               Content="{Binding Content, FallbackValue='a long long text to test'}" 
               RenderTransformOrigin="0.5,0.5" ClipToBounds="False"
                >
                <Label.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform/>
                        <TranslateTransform X="-20"  />
                    </TransformGroup>
                </Label.RenderTransform>
            </Label>
        </StackPanel>
    </Grid>
</UserControl>

当我在不更改内容的情况下使用它时,它可以正常工作并且动画有效:

<Window x:Class="WpfTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <local:Marquee></local:Marquee>
    </Grid>
</Window>

但是当我为其分配内容时,动画并不适用:

<Window x:Class="WpfTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <local:Marquee Content="This is another long long text to test"></local:Marquee>
    </Grid>
</Window>

您知道如何在绑定内容后使其正常工作吗?

0 个答案:

没有答案
相关问题