Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
Эксперт .NET
4319 / 1980 / 386
Регистрация: 27.03.2010
Сообщений: 5,430
Записей в блоге: 1
1

Как сделать анимацию прозрачности окна при наведении курсора мыши и его ухода с окна

02.04.2013, 02:10. Просмотров 2740. Ответов 12
Метки нет (Все метки)

Я сделал так (из класса убрал всё лишнее, только по теме оставил):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Threading;
using Resources;
using YourAssistant.Settings;
 
namespace YourAssistant
{
    public partial class AlarmMessageWindow : Window
    {
        private readonly Window _owner;
        private readonly float _opacity;
        private DoubleAnimation _animationOpacityOff;
        private DoubleAnimation _animationOpacityOn;
 
        public AlarmMessageWindow(Window owner, float opacity)
        {
            InitializeComponent();
            InitializeOpacityAnimation(opacity);
            Opacity = opacity;
            _owner = owner;
        }
 
        public AlarmMessageWindow(AlarmClock ac, Window owner)
            : this(owner, ac.OpacityFormMsg)
        {
        }
 
        public AlarmMessageWindow(MessageSettings msgSettings, Window owner)
            : this(owner, msgSettings.OpacityFormMsg)
        {
        }
 
        private void InitializeOpacityAnimation(float opacity)
        {
            animationOpacityOff = new DoubleAnimation(opacity, 1d, new Duration(TimeSpan.FromMilliseconds(400)), FillBehavior.HoldEnd);
            animationOpacityOn = new DoubleAnimation(1d, opacity, new Duration(TimeSpan.FromMilliseconds(400)), FillBehavior.HoldEnd);
        }
 
        private void Window_MouseEnter(object sender, MouseEventArgs e)
        {
            BeginAnimation(OpacityProperty, _animationOpacityOff);
            Debug.WriteLine("Window_MouseEnter");
        }
 
        private void Window_MouseLeave(object sender, MouseEventArgs e)
        {
            BeginAnimation(OpacityProperty, _animationOpacityOn);
            Debug.WriteLine("Window_MouseLeave");
        }
    }
}
И всё бы хорошо, но при перетаскивании окна, после того как я перетащив окно отпускаю левую кнопку мыши, то срабатывают обе анимации в таком порядке: Window_MouseLeave, Window_MouseEnter. Как этого избежать?

Добавлено через 4 минуты
Если не совсем ясно какое мне нужно поведение... Объясняю. В настройках я выставляю прозрачность для окна сообщения. После того как окошко с сообщением выведено на экран, он имеет ранее выставленную ему прозрачность. Когда юзер наводит курсор мыши на окно, то оно становится непрозрачным, когда убирает курсор мыши, то снова становится прозрачным как и было выставлено ранее в настройках для этого окошка. Но если юзер навёл курсор мыши и начал перетаскивать окно, то после того как отпускает левую кнопку мыши срабатывыают 2 анимации и это выглядит как баг, короче не так как задумано, этого не должно происходить.

Добавлено через 2 минуты
Думаю как-то можно вообще в XAML сделать? Надо как-то биндиться к свойству в окне (в примере кода это поле float _opacity;, но свойство сделать понятно не проблема).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2013, 02:10
Ответы с готовыми решениями:

Положение курсора мыши относительно окна стороннего приложения
Доброго времени суток всем. Хотелось бы узнать, можно ли узнать координаты мыши относительно...

Как получить Handle Окна при наведении мышкой
Здравствуйте! Как получить Handle Окна при наведении мышкой и как обозначить окно красным цветом?

Как отключить изменение цвета рамки TextBox при наведении курсора/выделение его
При использовании *TextBoxName*.BorderBrush рамка окрашивается, но если навести на TextBox курсор...

Как сделать эффект плавной прозрачности формы при наведении курсора
Нужно соорудить эффект для формы. На форме есть ползунок прозрачности, когда его дергаеш форма само...

12
1448 / 840 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
02.04.2013, 12:04 2
Есть возможность кинуть проект либо часть проекта? Можно даже новый проектик с этим окном.
0
Эксперт .NET
4319 / 1980 / 386
Регистрация: 27.03.2010
Сообщений: 5,430
Записей в блоге: 1
02.04.2013, 12:29  [ТС] 3
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Можно даже новый проектик с этим окном
Ок. Сейчас сделаю.

Добавлено через 1 минуту
Я в бленде намутил такое дело, если его переписать в код с подстановкой значения прозрачности, возможно оно будет работать как надо.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication3.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="640" Height="480" AllowsTransparency="True" WindowStyle="None" MouseLeftButtonDown="Window_MouseLeftButtonDown">
    <Window.Resources>
        <Storyboard x:Key="OnMouseEnter1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0.595"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                <EasingDoubleKeyFrame KeyTime="0" Value="0.595"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="Mouse.MouseEnter">
            <BeginStoryboard Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseLeave">
            <BeginStoryboard x:Name="OnMouseLeave1_BeginStoryboard" Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
    </Window.Triggers>
 
    <Grid x:Name="LayoutRoot"/>
</Window>
0
Эксперт .NET
4319 / 1980 / 386
Регистрация: 27.03.2010
Сообщений: 5,430
Записей в блоге: 1
02.04.2013, 12:30  [ТС] 4
Так как оно уже работает как надо (вышеприведённый XAML). Просто тут жёсткие значения прозрачности, а у меня в проекте прозрачность можно задавать для окна:
Как сделать анимацию прозрачности окна при наведении курсора мыши и его ухода с окна

А ну и там немного не так работает в XAML, при наведении курсора мыши окно наоборот становится прозрачным, а при покидании окна курсором окно становится непрозрачным, но это мелочи, поменять 2 сек.
0
Эксперт .NET
4319 / 1980 / 386
Регистрация: 27.03.2010
Сообщений: 5,430
Записей в блоге: 1
02.04.2013, 12:56  [ТС] 5
Кстати, если можно значения прозрачности как-то забиндить в XAML, это было бы вообще супер, чем код руками переписывать на C#.

Добавлено через 21 минуту
Вот какое мне нужно поведение:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication3.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="320" Height="240" AllowsTransparency="True" WindowStyle="None" 
    MouseLeftButtonDown="Window_MouseLeftButtonDown" Opacity="0.6"
    Background="{x:Null}" WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <Storyboard x:Key="OnMouseEnter1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0.6"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="Mouse.MouseEnter">
            <BeginStoryboard x:Name="OnMouseEnter_BeginStoryboard1" Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseLeave">
            <BeginStoryboard x:Name="OnMouseLeave_BeginStoryboard1" Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
    </Window.Triggers>
 
    <Border Background="#FFCC9155" CornerRadius="10" BorderThickness="0,0,5,5">
        <Border.Effect>
            <DropShadowEffect Opacity="0.4"/>
        </Border.Effect>
        <Grid x:Name="LayoutRoot"/>
    </Border>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
 
namespace WpfApplication3
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();
 
            // Insert code required on object creation below this point.
        }
 
        private void Window_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            DragMove();
        }
    }
}
Сейчас сначала попробую всё это дело перенести в код, если не получится, то сделаю отдельный проект и выложу сюда.
0
1448 / 840 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
02.04.2013, 13:40 6
Ну тебе то в коде можно только эту конструкцию
XML
1
2
3
4
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0.6"/>
            </DoubleAnimationUsingKeyFrames>
создавать и в Children <Storyboard x:Key="OnMouseLeave1"> засовывать!

Даже можно так:
XML
1
2
3
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                   <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0.6"/>
            </DoubleAnimationUsingKeyFrames>
Добавлено через 1 минуту
Немного дополню!
Создавать из кода их прийдётся потому что они Freezable
1
Эксперт .NET
4319 / 1980 / 386
Регистрация: 27.03.2010
Сообщений: 5,430
Записей в блоге: 1
02.04.2013, 13:42  [ТС] 7
Я тут уже всё сделал.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication3.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="320" Height="240" AllowsTransparency="True" WindowStyle="None" 
    MouseLeftButtonDown="Window_MouseLeftButtonDown" Opacity="0.6"
    Background="{x:Null}" WindowStartupLocation="CenterScreen" MouseDoubleClick="Window_MouseDoubleClick" >
    <!--<Window.Resources>
        <Storyboard x:Key="OnMouseEnter1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Window">
                <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0.6"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="Mouse.MouseEnter">
            <BeginStoryboard x:Name="OnMouseEnter_BeginStoryboard1" Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseLeave">
            <BeginStoryboard x:Name="OnMouseLeave_BeginStoryboard1" Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
    </Window.Triggers>-->
 
    <Border Background="#FFCC9155" CornerRadius="10" BorderThickness="0,0,5,5">
        <Border.Effect>
            <DropShadowEffect Opacity="0.4"/>
        </Border.Effect>
        <Grid x:Name="LayoutRoot"/>
    </Border>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media.Animation;
 
namespace WpfApplication3
{
    public partial class MainWindow : Window
    {
        public MainWindow(double opacity)
        {
            InitializeComponent();
            Opacity = opacity;
            InitializeAnimations(opacity);
        }
//да, нужно именно параметром передавать, так как неизвестно куда запихают этот метод и 
//начальное значение у прозрачности может быть не то, которое мы ожидаем. К примеру, 
//сначала в конструкторе окно получает начальное значение прозрачности из настроек
//(переданный параметр в конструктор окна), а потом мы вызываем этот метод, который 
//берёт значение напрямую из свойства окна, то всё будет работать, но если его поставить
// раньше получения прозрачности окном и параметров, то будет ошибка, которую можно 
//не сразу отловить, у меня была такая проблема, поэтому лучше уж в метод передавать 
//сразу значение из настроек не обращаясь к окну
        private void InitializeAnimations(double opacity)
        {
            Storyboard sbOnMouseEnter = new Storyboard();
            var doubleAnimationUsingKeyFrames1 = new DoubleAnimationUsingKeyFrames();
            Storyboard.SetTargetProperty(doubleAnimationUsingKeyFrames1, new PropertyPath("(UIElement.Opacity)"));
            Storyboard.SetTargetName(doubleAnimationUsingKeyFrames1, Name);
            doubleAnimationUsingKeyFrames1.KeyFrames.Add(new EasingDoubleKeyFrame(1d,
                                                                                  KeyTime.FromTimeSpan(
                                                                                      TimeSpan.FromMilliseconds(400))));
            sbOnMouseEnter.Children.Add(doubleAnimationUsingKeyFrames1);
 
            Storyboard sbOnMouseLeave = new Storyboard();
            var doubleAnimationUsingKeyFrames2 = new DoubleAnimationUsingKeyFrames();
            Storyboard.SetTargetProperty(doubleAnimationUsingKeyFrames2, new PropertyPath("(UIElement.Opacity)"));
            Storyboard.SetTargetName(doubleAnimationUsingKeyFrames2, Name);
            doubleAnimationUsingKeyFrames2.KeyFrames.Add(new EasingDoubleKeyFrame(opacity,
                                                                                  KeyTime.FromTimeSpan(
                                                                                      TimeSpan.FromMilliseconds(400))));
            sbOnMouseLeave.Children.Add(doubleAnimationUsingKeyFrames2);
 
 
            EventTrigger eTriggerMouseEnter = new EventTrigger(MouseEnterEvent);
            eTriggerMouseEnter.Actions.Add(new BeginStoryboard {Storyboard = sbOnMouseEnter});
 
            EventTrigger eTriggerMouseLeave = new EventTrigger(MouseLeaveEvent);
            eTriggerMouseLeave.Actions.Add(new BeginStoryboard {Storyboard = sbOnMouseLeave});
 
            Triggers.Add(eTriggerMouseEnter);
            Triggers.Add(eTriggerMouseLeave);
        }
 
        private void Window_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            DragMove();
        }
 
        private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            Application.Current.Shutdown();
        }
    }
}
0
1448 / 840 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
02.04.2013, 13:47 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void InitializeAnimations(double opacity)
        {
            Storyboard sbOnMouseEnter = new Storyboard();
            var doubleAnimationUsingKeyFrames1 = new DoubleAnimationUsingKeyFrames();
            Storyboard.SetTargetProperty(doubleAnimationUsingKeyFrames1, new PropertyPath("(UIElement.Opacity)"));
            Storyboard.SetTargetName(doubleAnimationUsingKeyFrames1, Name);
            doubleAnimationUsingKeyFrames1.KeyFrames.Add(new EasingDoubleKeyFrame(1d,
                                                                                  KeyTime.FromTimeSpan(
                                                                                      TimeSpan.FromMilliseconds(400))));
            sbOnMouseEnter.Children.Add(doubleAnimationUsingKeyFrames1);
 
            Storyboard sbOnMouseLeave = new Storyboard();
            var doubleAnimationUsingKeyFrames2 = new DoubleAnimationUsingKeyFrames();
            Storyboard.SetTargetProperty(doubleAnimationUsingKeyFrames2, new PropertyPath("(UIElement.Opacity)"));
            Storyboard.SetTargetName(doubleAnimationUsingKeyFrames2, Name);
            doubleAnimationUsingKeyFrames2.KeyFrames.Add(new EasingDoubleKeyFrame(opacity,
                                                                                  KeyTime.FromTimeSpan(
                                                                                      TimeSpan.FromMilliseconds(400))));
            sbOnMouseLeave.Children.Add(doubleAnimationUsingKeyFrames2);
 
 
            EventTrigger eTriggerMouseEnter = new EventTrigger(MouseEnterEvent);
            eTriggerMouseEnter.Actions.Add(new BeginStoryboard {Storyboard = sbOnMouseEnter});
 
            EventTrigger eTriggerMouseLeave = new EventTrigger(MouseLeaveEvent);
            eTriggerMouseLeave.Actions.Add(new BeginStoryboard {Storyboard = sbOnMouseLeave});
 
            Triggers.Add(eTriggerMouseEnter);
            Triggers.Add(eTriggerMouseLeave);
        }

даааааа!!!! Вы лёгких путей не ищете!
0
Эксперт .NET
4319 / 1980 / 386
Регистрация: 27.03.2010
Сообщений: 5,430
Записей в блоге: 1
02.04.2013, 14:10  [ТС] 9
Цитата Сообщение от LeniumSoft Посмотреть сообщение
даааааа!!!! Вы лёгких путей не ищете!
Я сначала разобрался как вообще в коде это делается, потом могу начать всё максимально сокращать в коде, как раз воспользовавшись вашим советом. То есть, на самом деле я ищу лёгкие пути .

Добавлено через 23 секунды
Цитата Сообщение от Casper-SC Посмотреть сообщение
потом могу начать всё максимально сокращать в коде
В смысле обычно я так делаю, если не лень и оно того стоит.

Добавлено через 1 минуту
В любом случае, в будущем может это кому-то пригодиться, в качестве примера будет. Иначе я бы не заморачивался и не отписывал вообще сюда результаты.

Добавлено через 7 минут
Беда, в моей программе вылетает UnhandledException, которое перехватывается прогой и выводится на экран:
Исключение вызвано программой: YourAssistant, Version=1.5.1.0, Culture=neutral, PublicKeyToken=null

Объект вызвавший ошибку: PresentationFramework

Сообщение описывающее ошибку: Не удается найти имя "" в области имен "YourAssistant.AlarmMessageWindow".

Метод класса: System.Windows.Media.Animation.Storyboard; Имя метода: ResolveTargetName; Имя и путь к модулю: C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFrame work\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.dl l

в System.Windows.Media.Animation.Storyboard.ResolveTargetName( String targetName, INameScope nameScope, DependencyObject element)
в System.Windows.Media.Animation.Storyboard.ClockTreeWalkRecur sive(Clock currentClock, DependencyObject containingObject, INameScope nameScope, DependencyObject parentObject, String parentObjectName, PropertyPath parentPropertyPath, HandoffBehavior handoffBehavior, HybridDictionary clockMappings, Int64 layer)
в System.Windows.Media.Animation.Storyboard.ClockTreeWalkRecur sive(Clock currentClock, DependencyObject containingObject, INameScope nameScope, DependencyObject parentObject, String parentObjectName, PropertyPath parentPropertyPath, HandoffBehavior handoffBehavior, HybridDictionary clockMappings, Int64 layer)
в System.Windows.Media.Animation.Storyboard.BeginCommon(Depend encyObject containingObject, INameScope nameScope, HandoffBehavior handoffBehavior, Boolean isControllable, Int64 layer)
в System.Windows.Media.Animation.BeginStoryboard.Begin(Depende ncyObject targetObject, INameScope nameScope, Int64 layer)
в System.Windows.Media.Animation.BeginStoryboard.Invoke(Framew orkElement fe)
в System.Windows.EventTrigger.EventTriggerSourceListener.Handl er(Object sender, RoutedEventArgs e)
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
в System.Windows.MouseOverProperty.FireNotifications(UIElement uie, ContentElement ce, UIElement3D uie3D, Boolean oldValue)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAn cestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.OnOriginValueChanged(D ependencyObject oldOrigin, DependencyObject newOrigin, IList`1 otherOrigins, DeferredElementTreeState& oldTreeState, Action`2 originChangedAction)
в System.Windows.Input.MouseDevice.ChangeMouseOver(IInputEleme nt mouseOver, Int32 timestamp)
в System.Windows.Input.MouseDevice.PreProcessInput(Object sender, PreProcessInputEventArgs e)
в System.Windows.Input.InputManager.ProcessStagingArea()
в System.Windows.Input.InputManager.ProcessInput(InputEventArg s input)
в System.Windows.Input.InputProviderSite.ReportInput(InputRepo rt inputReport)
в System.Windows.Interop.HwndMouseInputProvider.ReportInput(In tPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
в System.Windows.Interop.HwndMouseInputProvider.PossiblyDeacti vate(IntPtr hwndCapture, Boolean stillActiveIfOverSelf)
в System.Windows.Interop.HwndMouseInputProvider.FilterMessage( IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(D elegate callback, Object args, Int32 numArgs)
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Obj ect source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

InnerException == null
Добавлено через 12 минут
Оказывается проблема была в том, что у окна не задано имя, а оно требуется тут:
C#
1
Storyboard.SetTargetName(doubleAnimationUsingKeyFrames2, Name);
0
1448 / 840 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
02.04.2013, 14:15 10
Прилил проект!
0
Вложения
Тип файла: 7z WpfApplication1.7z (34.0 Кб, 27 просмотров)
LeniumSoft
02.04.2013, 14:16
  #11

Не по теме:

Прикольная теперь система управления вложениями!

0
Эксперт .NET
4319 / 1980 / 386
Регистрация: 27.03.2010
Сообщений: 5,430
Записей в блоге: 1
02.04.2013, 14:21  [ТС] 12
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Прилил проект!
Не. Там заданны жёстко значения прозрачности у EasingDoubleKeyFrame.

Добавлено через 25 секунд
И у меня почему-то открывается сразу окно 7, а не одно Oo

Добавлено через 1 минуту
В общем разберусь.
0
1448 / 840 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
02.04.2013, 15:43 13
Цитата Сообщение от Casper-SC Посмотреть сообщение
Не. Там заданны жёстко значения прозрачности у EasingDoubleKeyFrame.
Да я просто для примера! Я переопределил конструктор и генерирую пять окон в которых Random-но ставится Opacity. Генерятся они в App. Тоесть одно окно в котором это всё задано в xaml и пять дополнительных окон!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2013, 15:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как сделать поворот изображения при наведении курсора мыши
Всем Привет! Подскажите как сделать поворот изображения при наведении курсора мыши? Вот как здесь:...

Изменение цвета Label при наведении на него курсора мыши. Как это сделать?
Изменение цвета Label при наведении на него курсора мыши. Как это сделать? Какое свойство надо...

Как сделать так, чтобы при наведении курсора мыши на ссылку сразу же появилось примечание?
Как сделать такой-же скрипт: при наведении курсора мыши на ссылку сразу же появилось примечание, но...

Как сделать чтоб кнопка в форме при наведении на нее мышкой убегала от курсора мыши?
Добрый вечер) подскажите пожалуйста, как сделать чтоб кнопка в форме при наведении на нее мышкой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.