Цветовая анимация пользовательских кнопок WPF C # - PullRequest
0 голосов
/ 15 сентября 2018

Я застрял, пытаясь выяснить способ привязки фоновой кисти элемента управления к ресурсу «Цвет» в пользовательском элементе управления кнопки (создан пользовательский элемент управления и изменен производный класс на кнопку).

Я пытаюсь синхронизировать выбор пользовательского фона для пользовательской кнопки с триггером события выхода из мыши. Поэтому в этом случае я бы хотел, чтобы в поле анимации цвета «To =» был задан цвет фона, равный зеленому.

 <!--Inside a Window or Page where the control is being utilized.-->
    <Controls:ImageTextButton ImgPath="/Images/AlertImg.png"
                              ButtText='Hey Bro'
                              Height="65"
                              Background="Green"/>

<!--Control Template Inside the Custom Button-->
<Button.Template>
    <ControlTemplate>
        <Border x:Name="MainBorder" Background="{TemplateBinding Background}" >

. , .

            <!--Mouse Leave Animation-->
            <EventTrigger RoutedEvent="MouseLeave">

                <!--Fade to Default Background when the Mouse Leaves the Button-->
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation To="{Binding ElementName=MainBorder, Path=Background.Color}" 
                                        Duration="0:0:.3" 
                                        Storyboard.TargetName="MainBorder"
                                        Storyboard.TargetProperty="Background.Color"></ColorAnimation>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>

 <Button.Resources>
    <!--The Color that the control will change to when the mouse enters the control-->
    <Color x:Key="MouseOverColor">#FF348ECD</Color>

    <!--I want this bound to MainBorders Background Color/ Controls Background?????? Can't Bind to R,G,B-->
    <Color x:Key="RevertColor" R="{Binding ElementName=MainBorder, Path=Background.Color.R}"></Color>
</Button.Resources>

Привязка непосредственно к анимации не представляется возможным, поскольку генерируется исключение.

"InvalidOperationException: Невозможно заморозить это дерево шкалы времени раскадровки для использования в потоках."

Так что моей следующей мыслью будет привязка к цветовому ресурсу внутри пользовательского элемента управления, который вы можете использовать в цветной анимации, но вы не можете привязать значения R, G, B для создания цвета.

Binding Fail, Not Dependency Property

Я не знаю, переборщил ли я, но чувствую, что это не должно быть проблемой, так или иначе. Любые идеи будут оценены.

Спасибо

...