wpf交换路径属性具有枚举,然后动画启动时失败

发布于 2025-01-27 07:57:24 字数 17028 浏览 2 评论 0原文

我想制作一个自定义按钮控件,可以通过在主呼叫上分配的枚举属性进行更改。

因此,我还针对此可切换按钮实现了动画激活,该按钮在激活时将动画作为流动颜色开始。

但是,当我启动动画时,它会失败,因为我想更改名称的动画属性就不会在此处建立。

在MomeNMT上有两种样式进行测试,如果我仅定义自定义的动画和样式,它可以工作,但是当我尝试在动画触发时尝试添加第二种动画和样式时,它会失败。你能帮我吗?

这是我的代码;

这是generic.xaml,

<!-- Komut Butonlari -->
    <Style TargetType="{x:Type local:KomutButonlari}">
        <Setter Property="VerticalAlignment" 
                Value="Top"/>
        <Setter Property="HorizontalAlignment" 
                Value="Left"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:KomutButonlari}">
                    <Border x:Name="Sinir"
                            CornerRadius="50"
                            BorderThickness="0"
                            BorderBrush="Transparent">
                        <Border.Background>
                            <LinearGradientBrush EndPoint="1,1" 
                                                 StartPoint="0,1">
                                <GradientStop Color="#FF6ff7e8" 
                                              Offset="0"/>
                                <GradientStop Color="#FF1f7ea1" 
                                              Offset="1"/>
                            </LinearGradientBrush>
                        </Border.Background>
                        <Path x:Name="Ucgen">
                            <Path.Style>
                                <Style TargetType="Path">
                                    <Style.Triggers>
                                        <!-- Baslama Sekli -->
                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama">
                                            <Setter Property="Data" Value="M 25 20 L 85 50 25 80 Z"/>
                                            <Setter Property="Stroke" Value="#9928AF23"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#FF28AF23" 
                                                                      Offset="0"/>
                                                        <GradientStop x:Name="BaslamaOtelemesi" 
                                                                        Color="#FF28AF23" 
                                                                        Offset="0"/>
                                                        <GradientStop x:Name="BaslamaOtelemesi1" 
                                                                    Color="WhiteSmoke" 
                                                                    Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>                                            
                                        </DataTrigger>

                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Durdurma">
                                            <Setter Property="Data" Value="M 25 20 L 45 20 45 80 25 80 Z M 55 20 L 75 20 75 80 55 80 Z"/>
                                            <Setter Property="Stroke" Value="#E08A10"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#E08A10" 
                                                                        Offset="0"/>
                                                        <GradientStop x:Name="DurdurmaOtelemesi" 
                                                                        Color="#E08A10" 
                                                                        Offset="0"/>
                                                        <GradientStop x:Name="DurdurmaOtelemesi1" 
                                                                        Color="WhiteSmoke" 
                                                                        Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Path.Style>
                        </Path>
                    </Border>
                    
                    <ControlTemplate.Triggers>
                        <!-- Baslama Butonu -->
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="Aktif" Value="True"/>
                                <Condition Property="Stil" Value="Baslama"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.EnterActions>
                                <BeginStoryboard x:Name="BaslamaAnimasyonu">
                                    <Storyboard RepeatBehavior="Forever">
                                        <DoubleAnimation Storyboard.TargetName="BaslamaOtelemesi"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                        <DoubleAnimation Storyboard.TargetName="BaslamaOtelemesi1"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.EnterActions>
                            <MultiTrigger.ExitActions>
                                <StopStoryboard BeginStoryboardName="BaslamaAnimasyonu"/>
                            </MultiTrigger.ExitActions>
                        </MultiTrigger>

                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="Aktif" Value="True"/>
                                <Condition Property="Stil" Value="Durdurma"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.EnterActions>
                                <BeginStoryboard x:Name="DurdurmaAnimasyonu">
                                    <Storyboard RepeatBehavior="Forever">
                                        <DoubleAnimation Storyboard.TargetName="DurdurmaOtelemesi"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                        <DoubleAnimation Storyboard.TargetName="DurdurmaOtelemesi1"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.EnterActions>
                            <MultiTrigger.ExitActions>
                                <StopStoryboard BeginStoryboardName="DurdurmaAnimasyonu"/>
                            </MultiTrigger.ExitActions>
                        </MultiTrigger>
                        <!--<Trigger Property="Aktif" Value="True">                            
                            <Trigger.EnterActions>
                                <BeginStoryboard x:Name="AktiflikAnimasyonu">
                                    <Storyboard RepeatBehavior="Forever">
                                        <DoubleAnimation Storyboard.TargetName="KaydirmaOtelemesi"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                        <DoubleAnimation Storyboard.TargetName="KaydirmaOtelemesi1"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.EnterActions>
                            <Trigger.ExitActions>
                                
                            </Trigger.ExitActions>
                        </Trigger>-->
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

这是背后的代码;

public class KomutButonlari : ButtonBase
    {
        static KomutButonlari()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(KomutButonlari), new FrameworkPropertyMetadata(typeof(KomutButonlari)));
        }


        public enum KomutSinifi
        {
            Baslama,
            Durdurma,
            Reset,
            HataSilme
        }



        public KomutSinifi Stil
        {
            get { return (KomutSinifi)GetValue(StilProperty); }
            set { SetValue(StilProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Stil.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty StilProperty =
            DependencyProperty.Register("Stil", typeof(KomutSinifi), typeof(KomutButonlari), new PropertyMetadata(KomutSinifi.Baslama));




        public bool Aktif
        {
            get { return (bool)GetValue(AktifProperty); }
            set { SetValue(AktifProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Aktif.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty AktifProperty =
            DependencyProperty.Register("Aktif", typeof(bool), typeof(KomutButonlari), new PropertyMetadata(false));




    }

这是我打电话的方式;

<StackPanel Grid.Row="3" Grid.ColumnSpan="3" Orientation="Horizontal">
            <nesne:KomutButonlari Aktif="{Binding Test1, Mode=TwoWay}" Width="100" Height="100" Margin="10" Stil="Baslama" Click="Button_Click"/>
            <nesne:KomutButonlari Aktif="{Binding Test1, Mode=TwoWay}" Width="100" Height="100" Margin="10" Stil="Durdurma"/>
        </StackPanel>

以及后面的主窗口代码;

private void Button_Click(object sender, RoutedEventArgs e)
        {
            Test1 = !Test1;
        }

要获得故障,您需要单击一次到按钮以更改trig属性以启动动画。

任何IDEAD都可以一次实现这两种样式吗?

更新:

解决方案在下面,

更改Storyboard.targetName =“ Baslamaotelemesi”到Storyboard.targetProperty =“ fill。还要与条件进行多比较,我只需更改为MultidatatRigger而不是dataTrigger

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama">
                                            <Setter Property="Data" Value="M 25 20 L 85 50 25 80 Z"/>
                                            <Setter Property="Stroke" Value="#9928AF23"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#FF28AF23" 
                                                                      Offset="0"/>
                                                        <GradientStop   Color="#FF28AF23" 
                                                                        Offset="0"/>
                                                        <GradientStop   Color="WhiteSmoke"
                                                                        Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>

                                        <MultiDataTrigger>
                                            <MultiDataTrigger.Conditions>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama"/>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Aktif}" Value="True"/>
                                            </MultiDataTrigger.Conditions>
                                            <MultiDataTrigger.EnterActions>
                                                <BeginStoryboard x:Name="BaslamaAnimasyonu">
                                                    <Storyboard RepeatBehavior="Forever">
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[1].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[2].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </MultiDataTrigger.EnterActions>
                                            <MultiDataTrigger.ExitActions>
                                                <StopStoryboard BeginStoryboardName="BaslamaAnimasyonu"/>
                                            </MultiDataTrigger.ExitActions>
                                        </MultiDataTrigger>

I would like to make a custom button control which can be change with an enum property that assigned on main call.

So i have implemented additionally an animation activation to this switchable button that start the animation as flowing color when activated.

But when i start the animation it fails as animation property that i want to change name is not founded here.

There is two style at the momemnt for testing, it works if i only define self defined animation and style, but when i try to add second one when animation triggered it fails. Could you please help me about it?

Here is my code;

This is Generic.xaml

<!-- Komut Butonlari -->
    <Style TargetType="{x:Type local:KomutButonlari}">
        <Setter Property="VerticalAlignment" 
                Value="Top"/>
        <Setter Property="HorizontalAlignment" 
                Value="Left"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:KomutButonlari}">
                    <Border x:Name="Sinir"
                            CornerRadius="50"
                            BorderThickness="0"
                            BorderBrush="Transparent">
                        <Border.Background>
                            <LinearGradientBrush EndPoint="1,1" 
                                                 StartPoint="0,1">
                                <GradientStop Color="#FF6ff7e8" 
                                              Offset="0"/>
                                <GradientStop Color="#FF1f7ea1" 
                                              Offset="1"/>
                            </LinearGradientBrush>
                        </Border.Background>
                        <Path x:Name="Ucgen">
                            <Path.Style>
                                <Style TargetType="Path">
                                    <Style.Triggers>
                                        <!-- Baslama Sekli -->
                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama">
                                            <Setter Property="Data" Value="M 25 20 L 85 50 25 80 Z"/>
                                            <Setter Property="Stroke" Value="#9928AF23"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#FF28AF23" 
                                                                      Offset="0"/>
                                                        <GradientStop x:Name="BaslamaOtelemesi" 
                                                                        Color="#FF28AF23" 
                                                                        Offset="0"/>
                                                        <GradientStop x:Name="BaslamaOtelemesi1" 
                                                                    Color="WhiteSmoke" 
                                                                    Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>                                            
                                        </DataTrigger>

                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Durdurma">
                                            <Setter Property="Data" Value="M 25 20 L 45 20 45 80 25 80 Z M 55 20 L 75 20 75 80 55 80 Z"/>
                                            <Setter Property="Stroke" Value="#E08A10"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#E08A10" 
                                                                        Offset="0"/>
                                                        <GradientStop x:Name="DurdurmaOtelemesi" 
                                                                        Color="#E08A10" 
                                                                        Offset="0"/>
                                                        <GradientStop x:Name="DurdurmaOtelemesi1" 
                                                                        Color="WhiteSmoke" 
                                                                        Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Path.Style>
                        </Path>
                    </Border>
                    
                    <ControlTemplate.Triggers>
                        <!-- Baslama Butonu -->
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="Aktif" Value="True"/>
                                <Condition Property="Stil" Value="Baslama"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.EnterActions>
                                <BeginStoryboard x:Name="BaslamaAnimasyonu">
                                    <Storyboard RepeatBehavior="Forever">
                                        <DoubleAnimation Storyboard.TargetName="BaslamaOtelemesi"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                        <DoubleAnimation Storyboard.TargetName="BaslamaOtelemesi1"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.EnterActions>
                            <MultiTrigger.ExitActions>
                                <StopStoryboard BeginStoryboardName="BaslamaAnimasyonu"/>
                            </MultiTrigger.ExitActions>
                        </MultiTrigger>

                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="Aktif" Value="True"/>
                                <Condition Property="Stil" Value="Durdurma"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.EnterActions>
                                <BeginStoryboard x:Name="DurdurmaAnimasyonu">
                                    <Storyboard RepeatBehavior="Forever">
                                        <DoubleAnimation Storyboard.TargetName="DurdurmaOtelemesi"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                        <DoubleAnimation Storyboard.TargetName="DurdurmaOtelemesi1"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.EnterActions>
                            <MultiTrigger.ExitActions>
                                <StopStoryboard BeginStoryboardName="DurdurmaAnimasyonu"/>
                            </MultiTrigger.ExitActions>
                        </MultiTrigger>
                        <!--<Trigger Property="Aktif" Value="True">                            
                            <Trigger.EnterActions>
                                <BeginStoryboard x:Name="AktiflikAnimasyonu">
                                    <Storyboard RepeatBehavior="Forever">
                                        <DoubleAnimation Storyboard.TargetName="KaydirmaOtelemesi"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                        <DoubleAnimation Storyboard.TargetName="KaydirmaOtelemesi1"
                                                         Storyboard.TargetProperty="Offset"
                                                         To="1"
                                                         Duration="0:0:0:3"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.EnterActions>
                            <Trigger.ExitActions>
                                
                            </Trigger.ExitActions>
                        </Trigger>-->
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

This one is code behind;

public class KomutButonlari : ButtonBase
    {
        static KomutButonlari()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(KomutButonlari), new FrameworkPropertyMetadata(typeof(KomutButonlari)));
        }


        public enum KomutSinifi
        {
            Baslama,
            Durdurma,
            Reset,
            HataSilme
        }



        public KomutSinifi Stil
        {
            get { return (KomutSinifi)GetValue(StilProperty); }
            set { SetValue(StilProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Stil.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty StilProperty =
            DependencyProperty.Register("Stil", typeof(KomutSinifi), typeof(KomutButonlari), new PropertyMetadata(KomutSinifi.Baslama));




        public bool Aktif
        {
            get { return (bool)GetValue(AktifProperty); }
            set { SetValue(AktifProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Aktif.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty AktifProperty =
            DependencyProperty.Register("Aktif", typeof(bool), typeof(KomutButonlari), new PropertyMetadata(false));




    }

Here is how i call my buttons;

<StackPanel Grid.Row="3" Grid.ColumnSpan="3" Orientation="Horizontal">
            <nesne:KomutButonlari Aktif="{Binding Test1, Mode=TwoWay}" Width="100" Height="100" Margin="10" Stil="Baslama" Click="Button_Click"/>
            <nesne:KomutButonlari Aktif="{Binding Test1, Mode=TwoWay}" Width="100" Height="100" Margin="10" Stil="Durdurma"/>
        </StackPanel>

And also main window code behind;

private void Button_Click(object sender, RoutedEventArgs e)
        {
            Test1 = !Test1;
        }

To get failure you need to click once to button to trig property change to start animation..

Any idead to implement both style in once like this ?

Update:

Solution is below,

Changing Storyboard.TargetName="BaslamaOtelemesi" to Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[1].(GradientStop.Offset)" work well. Also to make multi comparement with condition i just change to multidatatrigger instead datatrigger.

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama">
                                            <Setter Property="Data" Value="M 25 20 L 85 50 25 80 Z"/>
                                            <Setter Property="Stroke" Value="#9928AF23"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#FF28AF23" 
                                                                      Offset="0"/>
                                                        <GradientStop   Color="#FF28AF23" 
                                                                        Offset="0"/>
                                                        <GradientStop   Color="WhiteSmoke"
                                                                        Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>

                                        <MultiDataTrigger>
                                            <MultiDataTrigger.Conditions>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama"/>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Aktif}" Value="True"/>
                                            </MultiDataTrigger.Conditions>
                                            <MultiDataTrigger.EnterActions>
                                                <BeginStoryboard x:Name="BaslamaAnimasyonu">
                                                    <Storyboard RepeatBehavior="Forever">
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[1].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[2].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </MultiDataTrigger.EnterActions>
                                            <MultiDataTrigger.ExitActions>
                                                <StopStoryboard BeginStoryboardName="BaslamaAnimasyonu"/>
                                            </MultiDataTrigger.ExitActions>
                                        </MultiDataTrigger>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

桃扇骨 2025-02-03 07:57:24
<!-- Komut Butonlari -->
    <Style TargetType="{x:Type local:KomutButonlari}">
        <Setter Property="VerticalAlignment" 
                Value="Top"/>
        <Setter Property="HorizontalAlignment" 
                Value="Left"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:KomutButonlari}">
                    <Border x:Name="Sinir"
                            CornerRadius="50"
                            BorderThickness="0"
                            BorderBrush="Transparent">
                        <Border.Background>
                            <LinearGradientBrush EndPoint="1,1" 
                                                 StartPoint="0,1">
                                <GradientStop Color="#FF6ff7e8" 
                                              Offset="0"/>
                                <GradientStop Color="#FF1f7ea1" 
                                              Offset="1"/>
                            </LinearGradientBrush>
                        </Border.Background>
                        <Path x:Name="Ucgen">
                            <Path.Style>
                                <Style TargetType="Path">
                                    <Style.Triggers>
                                        <!-- Baslama Sekli -->
                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama">
                                            <Setter Property="Data" Value="M 25 20 L 85 50 25 80 Z"/>
                                            <Setter Property="Stroke" Value="#9928AF23"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#FF28AF23" 
                                                                      Offset="0"/>
                                                        <GradientStop   Color="#FF28AF23" 
                                                                        Offset="0"/>
                                                        <GradientStop   Color="WhiteSmoke"
                                                                        Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>

                                        <MultiDataTrigger>
                                            <MultiDataTrigger.Conditions>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama"/>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Aktif}" Value="True"/>
                                            </MultiDataTrigger.Conditions>
                                            <MultiDataTrigger.EnterActions>
                                                <BeginStoryboard x:Name="BaslamaAnimasyonu">
                                                    <Storyboard RepeatBehavior="Forever">
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[1].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[2].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </MultiDataTrigger.EnterActions>
                                            <MultiDataTrigger.ExitActions>
                                                <StopStoryboard BeginStoryboardName="BaslamaAnimasyonu"/>
                                            </MultiDataTrigger.ExitActions>
                                        </MultiDataTrigger>

                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Durdurma">
                                            <Setter Property="Data" Value="M 25 20 L 45 20 45 80 25 80 Z M 55 20 L 75 20 75 80 55 80 Z"/>
                                            <Setter Property="Stroke" Value="#99E08A10"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#E08A10"
                                                                      Offset="0"/>
                                                        <GradientStop Color="#E08A10"
                                                                        Offset="0"/>
                                                        <GradientStop Color="WhiteSmoke"
                                                                    Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>

                                        <MultiDataTrigger>
                                            <MultiDataTrigger.Conditions>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Durdurma"/>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Aktif}" Value="True"/>
                                            </MultiDataTrigger.Conditions>
                                            <MultiDataTrigger.EnterActions>
                                                <BeginStoryboard x:Name="DurdurmaAnimasyonu">
                                                    <Storyboard RepeatBehavior="Forever">
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[1].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[2].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </MultiDataTrigger.EnterActions>
                                            <MultiDataTrigger.ExitActions>
                                                <StopStoryboard BeginStoryboardName="DurdurmaAnimasyonu"/>
                                            </MultiDataTrigger.ExitActions>
                                        </MultiDataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Path.Style>
                        </Path>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
<!-- Komut Butonlari -->
    <Style TargetType="{x:Type local:KomutButonlari}">
        <Setter Property="VerticalAlignment" 
                Value="Top"/>
        <Setter Property="HorizontalAlignment" 
                Value="Left"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:KomutButonlari}">
                    <Border x:Name="Sinir"
                            CornerRadius="50"
                            BorderThickness="0"
                            BorderBrush="Transparent">
                        <Border.Background>
                            <LinearGradientBrush EndPoint="1,1" 
                                                 StartPoint="0,1">
                                <GradientStop Color="#FF6ff7e8" 
                                              Offset="0"/>
                                <GradientStop Color="#FF1f7ea1" 
                                              Offset="1"/>
                            </LinearGradientBrush>
                        </Border.Background>
                        <Path x:Name="Ucgen">
                            <Path.Style>
                                <Style TargetType="Path">
                                    <Style.Triggers>
                                        <!-- Baslama Sekli -->
                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama">
                                            <Setter Property="Data" Value="M 25 20 L 85 50 25 80 Z"/>
                                            <Setter Property="Stroke" Value="#9928AF23"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#FF28AF23" 
                                                                      Offset="0"/>
                                                        <GradientStop   Color="#FF28AF23" 
                                                                        Offset="0"/>
                                                        <GradientStop   Color="WhiteSmoke"
                                                                        Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>

                                        <MultiDataTrigger>
                                            <MultiDataTrigger.Conditions>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Baslama"/>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Aktif}" Value="True"/>
                                            </MultiDataTrigger.Conditions>
                                            <MultiDataTrigger.EnterActions>
                                                <BeginStoryboard x:Name="BaslamaAnimasyonu">
                                                    <Storyboard RepeatBehavior="Forever">
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[1].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[2].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </MultiDataTrigger.EnterActions>
                                            <MultiDataTrigger.ExitActions>
                                                <StopStoryboard BeginStoryboardName="BaslamaAnimasyonu"/>
                                            </MultiDataTrigger.ExitActions>
                                        </MultiDataTrigger>

                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Durdurma">
                                            <Setter Property="Data" Value="M 25 20 L 45 20 45 80 25 80 Z M 55 20 L 75 20 75 80 55 80 Z"/>
                                            <Setter Property="Stroke" Value="#99E08A10"/>
                                            <Setter Property="StrokeLineJoin" Value="Round"/>
                                            <Setter Property="StrokeThickness" Value="4"/>
                                            <Setter Property="Fill">
                                                <Setter.Value>
                                                    <LinearGradientBrush EndPoint="1,1" 
                                                                         StartPoint="0,1">
                                                        <GradientStop Color="#E08A10"
                                                                      Offset="0"/>
                                                        <GradientStop Color="#E08A10"
                                                                        Offset="0"/>
                                                        <GradientStop Color="WhiteSmoke"
                                                                    Offset="0"/>
                                                    </LinearGradientBrush>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>

                                        <MultiDataTrigger>
                                            <MultiDataTrigger.Conditions>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Stil}" Value="Durdurma"/>
                                                <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:KomutButonlari}}, Path=Aktif}" Value="True"/>
                                            </MultiDataTrigger.Conditions>
                                            <MultiDataTrigger.EnterActions>
                                                <BeginStoryboard x:Name="DurdurmaAnimasyonu">
                                                    <Storyboard RepeatBehavior="Forever">
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[1].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                        <DoubleAnimation Storyboard.TargetProperty="Fill.(GradientBrush.GradientStops)[2].(GradientStop.Offset)"
                                                         To="1"
                                                         Duration="0:0:0:3"/>
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </MultiDataTrigger.EnterActions>
                                            <MultiDataTrigger.ExitActions>
                                                <StopStoryboard BeginStoryboardName="DurdurmaAnimasyonu"/>
                                            </MultiDataTrigger.ExitActions>
                                        </MultiDataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Path.Style>
                        </Path>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文