使按钮以WPF形式在XAML中旋转

使按钮以WPF形式在XAML中旋转,wpf,xaml,button,Wpf,Xaml,Button,我需要使一个按钮在按下时旋转,但我无法找出我的代码出了什么问题。我今天才开始使用XAML,所以这可能是非常明显的。 当我运行代码时,在运行时会出现以下错误: PresentationFramework.dll中首次出现类型为“System.Windows.Markup.XamlParseException”的异常 其他信息:在车辆系统中使用初始化器。Windows。控件。按钮heeft。regelnummer 63 en>regelpositie 15 这是我目前掌握的代码: <Butto

我需要使一个按钮在按下时旋转,但我无法找出我的代码出了什么问题。我今天才开始使用XAML,所以这可能是非常明显的。 当我运行代码时,在运行时会出现以下错误:

PresentationFramework.dll中首次出现类型为“System.Windows.Markup.XamlParseException”的异常

其他信息:在车辆系统中使用初始化器。Windows。控件。按钮heeft。regelnummer 63 en>regelpositie 15

这是我目前掌握的代码:

<Button x:Name="ArrowButton" HorizontalAlignment="Left" Margin="148,198,0,0" VerticalAlignment="Top" Width="360" Height="360">
    <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click" SourceName="UpArrow">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation
Storyboard.TargetName="UpArrow"  
Storyboard.TargetProperty="(RenderTransform).(RotateTransform.Angle)"
From="0" To="360" Duration="0:0:2" 
RepeatBehavior="Forever" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Button.Triggers>
    <Button.Background>
        <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
            <GradientStop Color="#FFF3F3F3" Offset="0"/>
            <GradientStop Color="#FFEBEBEB"/>
            <GradientStop Color="#00CDCDCD"/>
        </LinearGradientBrush>
    </Button.Background>
    <Image Source="upArrow.png" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Center" Height="360" Width="360" RenderTransformOrigin="0.5,0.5" MouseDown="Image_MouseDown">
        <Image.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="90"/>
                <TranslateTransform/>
            </TransformGroup>
        </Image.RenderTransform>
    </Image>
</Button>

我的建议是,制作动画时,不要试图在代码中说明如何制作动画!你已经准备好了。(当你制作图形时,你不需要通过代码来绘制它们,而是通过绘制来绘制,与动画一样)只有在真正需要的时候,才编辑你的代码来添加画龙点睛的效果

刚刚用于工作的混合:

<Window.Resources>
    <Storyboard x:Key="OnClick1">
        <DoubleAnimationUsingKeyFrames RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="UpArrow">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-360"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>
<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ArrowButton">
        <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
    </EventTrigger>
</Window.Triggers>
<Grid x:Name="MainGrid" Grid.Row="0">
    <Button x:Name="ArrowButton" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100" RenderTransformOrigin="0.5,0.5">
        <Image x:Name="UpArrow" Width="30" Height="30" RenderTransformOrigin="0.5, 0.5" >
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
    </Button>
</Grid>

我的建议是,制作动画时,不要试图在代码中说明如何制作动画!你已经准备好了。(当你制作图形时,你不需要通过代码来绘制它们,而是通过绘制来绘制,与动画一样)只有在真正需要的时候,才编辑你的代码来添加画龙点睛的效果

刚刚用于工作的混合:

<Window.Resources>
    <Storyboard x:Key="OnClick1">
        <DoubleAnimationUsingKeyFrames RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="UpArrow">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-360"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>
<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ArrowButton">
        <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
    </EventTrigger>
</Window.Triggers>
<Grid x:Name="MainGrid" Grid.Row="0">
    <Button x:Name="ArrowButton" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100" RenderTransformOrigin="0.5,0.5">
        <Image x:Name="UpArrow" Width="30" Height="30" RenderTransformOrigin="0.5, 0.5" >
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
    </Button>
</Grid>

我的建议是,制作动画时,不要试图在代码中说明如何制作动画!你已经准备好了。(当你制作图形时,你不需要通过代码来绘制它们,而是通过绘制来绘制,与动画一样)只有在真正需要的时候,才编辑你的代码来添加画龙点睛的效果

刚刚用于工作的混合:

<Window.Resources>
    <Storyboard x:Key="OnClick1">
        <DoubleAnimationUsingKeyFrames RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="UpArrow">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-360"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>
<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ArrowButton">
        <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
    </EventTrigger>
</Window.Triggers>
<Grid x:Name="MainGrid" Grid.Row="0">
    <Button x:Name="ArrowButton" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100" RenderTransformOrigin="0.5,0.5">
        <Image x:Name="UpArrow" Width="30" Height="30" RenderTransformOrigin="0.5, 0.5" >
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
    </Button>
</Grid>

我的建议是,制作动画时,不要试图在代码中说明如何制作动画!你已经准备好了。(当你制作图形时,你不需要通过代码来绘制它们,而是通过绘制来绘制,与动画一样)只有在真正需要的时候,才编辑你的代码来添加画龙点睛的效果

刚刚用于工作的混合:

<Window.Resources>
    <Storyboard x:Key="OnClick1">
        <DoubleAnimationUsingKeyFrames RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="UpArrow">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-360"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>
<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ArrowButton">
        <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
    </EventTrigger>
</Window.Triggers>
<Grid x:Name="MainGrid" Grid.Row="0">
    <Button x:Name="ArrowButton" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100" RenderTransformOrigin="0.5,0.5">
        <Image x:Name="UpArrow" Width="30" Height="30" RenderTransformOrigin="0.5, 0.5" >
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
    </Button>
</Grid>

一个问题是,您试图将目标
向上旋转,但没有具有此名称的元素,因此请命名您的
图像

<Image x:Name="UpArrow" ... />
因此,您的XAML应该如下所示:

<Button x:Name="ArrowButton" HorizontalAlignment="Left" Margin="148,198,0,0" VerticalAlignment="Top" Width="360" Height="360">
   <Button.Triggers>
      <EventTrigger RoutedEvent="Button.Click">
         <BeginStoryboard>
            <Storyboard>
               <DoubleAnimation 
                  Storyboard.TargetName="UpArrow"  
                  Storyboard.TargetProperty="RenderTransform.Children[2].(RotateTransform.Angle)" 
                  From="0" 
                  To="360" 
                  Duration="0:0:2" 
                  RepeatBehavior="Forever" />
            </Storyboard>
         </BeginStoryboard>
      </EventTrigger>
   </Button.Triggers>
   <Button.Background>
      <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
         <GradientStop Color="#FFF3F3F3" Offset="0"/>
         <GradientStop Color="#FFEBEBEB"/>
         <GradientStop Color="#00CDCDCD"/>
      </LinearGradientBrush>
   </Button.Background>
   <Image 
      x:Name="UpArrow" 
      Source="upArrow.png" 
      Stretch="Fill" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Height="360" 
      Width="360" 
      RenderTransformOrigin="0.5,0.5">
      <Image.RenderTransform>
         <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform Angle="90"/>
            <TranslateTransform/>
         </TransformGroup>
      </Image.RenderTransform>
   </Image>
</Button>

一个问题是,您试图将目标
向上旋转,但没有具有此名称的元素,因此请命名您的
图像

<Image x:Name="UpArrow" ... />
因此,您的XAML应该如下所示:

<Button x:Name="ArrowButton" HorizontalAlignment="Left" Margin="148,198,0,0" VerticalAlignment="Top" Width="360" Height="360">
   <Button.Triggers>
      <EventTrigger RoutedEvent="Button.Click">
         <BeginStoryboard>
            <Storyboard>
               <DoubleAnimation 
                  Storyboard.TargetName="UpArrow"  
                  Storyboard.TargetProperty="RenderTransform.Children[2].(RotateTransform.Angle)" 
                  From="0" 
                  To="360" 
                  Duration="0:0:2" 
                  RepeatBehavior="Forever" />
            </Storyboard>
         </BeginStoryboard>
      </EventTrigger>
   </Button.Triggers>
   <Button.Background>
      <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
         <GradientStop Color="#FFF3F3F3" Offset="0"/>
         <GradientStop Color="#FFEBEBEB"/>
         <GradientStop Color="#00CDCDCD"/>
      </LinearGradientBrush>
   </Button.Background>
   <Image 
      x:Name="UpArrow" 
      Source="upArrow.png" 
      Stretch="Fill" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Height="360" 
      Width="360" 
      RenderTransformOrigin="0.5,0.5">
      <Image.RenderTransform>
         <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform Angle="90"/>
            <TranslateTransform/>
         </TransformGroup>
      </Image.RenderTransform>
   </Image>
</Button>

一个问题是,您试图将目标
向上旋转,但没有具有此名称的元素,因此请命名您的
图像

<Image x:Name="UpArrow" ... />
因此,您的XAML应该如下所示:

<Button x:Name="ArrowButton" HorizontalAlignment="Left" Margin="148,198,0,0" VerticalAlignment="Top" Width="360" Height="360">
   <Button.Triggers>
      <EventTrigger RoutedEvent="Button.Click">
         <BeginStoryboard>
            <Storyboard>
               <DoubleAnimation 
                  Storyboard.TargetName="UpArrow"  
                  Storyboard.TargetProperty="RenderTransform.Children[2].(RotateTransform.Angle)" 
                  From="0" 
                  To="360" 
                  Duration="0:0:2" 
                  RepeatBehavior="Forever" />
            </Storyboard>
         </BeginStoryboard>
      </EventTrigger>
   </Button.Triggers>
   <Button.Background>
      <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
         <GradientStop Color="#FFF3F3F3" Offset="0"/>
         <GradientStop Color="#FFEBEBEB"/>
         <GradientStop Color="#00CDCDCD"/>
      </LinearGradientBrush>
   </Button.Background>
   <Image 
      x:Name="UpArrow" 
      Source="upArrow.png" 
      Stretch="Fill" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Height="360" 
      Width="360" 
      RenderTransformOrigin="0.5,0.5">
      <Image.RenderTransform>
         <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform Angle="90"/>
            <TranslateTransform/>
         </TransformGroup>
      </Image.RenderTransform>
   </Image>
</Button>

一个问题是,您试图将目标
向上旋转,但没有具有此名称的元素,因此请命名您的
图像

<Image x:Name="UpArrow" ... />
因此,您的XAML应该如下所示:

<Button x:Name="ArrowButton" HorizontalAlignment="Left" Margin="148,198,0,0" VerticalAlignment="Top" Width="360" Height="360">
   <Button.Triggers>
      <EventTrigger RoutedEvent="Button.Click">
         <BeginStoryboard>
            <Storyboard>
               <DoubleAnimation 
                  Storyboard.TargetName="UpArrow"  
                  Storyboard.TargetProperty="RenderTransform.Children[2].(RotateTransform.Angle)" 
                  From="0" 
                  To="360" 
                  Duration="0:0:2" 
                  RepeatBehavior="Forever" />
            </Storyboard>
         </BeginStoryboard>
      </EventTrigger>
   </Button.Triggers>
   <Button.Background>
      <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
         <GradientStop Color="#FFF3F3F3" Offset="0"/>
         <GradientStop Color="#FFEBEBEB"/>
         <GradientStop Color="#00CDCDCD"/>
      </LinearGradientBrush>
   </Button.Background>
   <Image 
      x:Name="UpArrow" 
      Source="upArrow.png" 
      Stretch="Fill" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Height="360" 
      Width="360" 
      RenderTransformOrigin="0.5,0.5">
      <Image.RenderTransform>
         <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform Angle="90"/>
            <TranslateTransform/>
         </TransformGroup>
      </Image.RenderTransform>
   </Image>
</Button>


按钮
图像
内部按钮?@dkozl我试图旋转按钮,但内部图像为圆形,因此,在不剪切部分图像的情况下也可以使用。今天刚开始使用XAML,我希望您在编写一些XAML代码之前有时间阅读WPF的许多其他高级和重要概念。我没有看到任何名为“UpArrow”的元素
在您的代码中?
按钮
图像
内部按钮?@dkozl我试图旋转按钮,但内部图像为圆形,因此,在不剪切部分图像的情况下也可以使用。今天刚开始使用XAML,我希望您在编写一些XAML代码之前有时间阅读WPF的许多其他高级和重要概念。我没有看到任何名为“UpArrow”的元素
在您的代码中?
按钮
图像
内部按钮?@dkozl我尝试旋转按钮,但内部图像是圆形的,因此也可以不切割图像的一部分。今天刚开始使用XAML,我希望您有时间阅读许多其他高级和重要的图像概念