|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
Помогите разобраться с закрытием окна. Хотелось сделать анимацию при открытии и закрытии окна, чтобы при открытии окно плавно появлялось из невидимости, а при закрытии наоборот. В первом случае проблем нет, такой триггер все делает на отлично: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Но при попытке повесить триггер с обратной анимацией на событие Window.Closed возникает исключение. Помогите решить проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:04 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, исключение покажи. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:08 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
Показываю System.Windows.Markup.XamlParseException occurred Message='Provide value on 'System.Windows.Baml2006.TypeConverterMarkupExtension' threw an exception.' Line number '17' and line position '10'. Source=PresentationFramework LineNumber=17 LinePosition=10 StackTrace: at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri) at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) at WpfApplication1.MyWindow.InitializeComponent() in d:\Projects\Book C#\WPF\WpfApplication1\WpfApplication1\MyWindow.xaml:line 1 at WpfApplication1.MyWindow..ctor() in D:\Projects\Book C#\WPF\WpfApplication1\WpfApplication1\MyWindow.xaml.cs:line 23 InnerException: System.NotSupportedException Message=RoutedEventConverter cannot convert from System.String. Source=System StackTrace: at System.ComponentModel.TypeConverter.GetConvertFromException(Object value) at System.Windows.Markup.RoutedEventConverter.ConvertFrom(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, Object source) at System.Windows.Baml2006.TypeConverterMarkupExtension.ProvideValue(IServiceProvider serviceProvider) at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CallProvideValue(MarkupExtension me, IServiceProvider serviceProvider) InnerException: ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:11 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, покажи что там на 17 строчке и сам документ, который содержит эту строчку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:13 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, авторна событие Window.Closed возникает исключение может лучше использовать Window.Unloaded ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:19 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
тут как раз объявление триггера. Вот весь код окна Код: 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.
А вот она 17 строка <EventTrigger RoutedEvent="Window.Closed"> ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:21 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, "Window.Closed" откуда взял это название? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:30 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
Из списка событий окна. Начинаю понимать, Window.Closed это не маршрутизируемое событие, а я пытаюсь на него повесить триггер, поэтому и вылезает исключение. Тогда как правильно сделать обработку закрытия окна? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:33 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, вообще, как тебе подсказали выше, лучше не на closed, потому что там уже ничего нету, как я помню из аналогии winforms. поэтому поднимись выше до unloaded. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:45 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
Не заметил сообщение про Unloaded. Но в любом случае оно не катит, я так понимаю что оно возникает уже после закрытия окна, а мне нужно как раз перед закрытием. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:53 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, Closing? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:57 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
Lelouch, Closing тоже не маршрутизируемое событие, такое же исключение как и Closed ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 17:59 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, ты тогда, просто, запиши код, на событии closing , который дергает storyboard и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 18:02 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
AlexeiK, Вот такой код все равно не срабатывает, окно закрывается без вской анимации Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
пробовал перекрыть метод OnClosing Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
но тоже не работает. Но вобще хотелось бы все это сделать разметкой xaml. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 19:32 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, ну это. а если смекалку включить? в closing делаешь e.cancelevent=true запускаешь анимацию. закрываешь окно еще раз кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2012, 22:55 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
Получилось только добавить на форму кнопку с таким обработчиком Код: c# 1. 2. 3. 4. 5. 6. 7.
С перехватом события Closing ничего у меня не получилось. Уважаемый AlexeiK, может подскажете как это должно правильно выглядеть? Следующий код приводит к тому что окно уходит в прозрачность но не закрыватеся Код: c# 1. 2. 3. 4. 5.
Но и все таки, хотелось бы узнать, возможно ли такое сделать с помощью триггера, а не в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 08:54 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, авторanim.Completed += (s, a) => e.Cancel = false; по вашему WPF синхронен? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 09:59 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, как тебе выше сказали. ты почти у цели. только вот e.cancel=false это не то. вот вместо e.cancel=false поставь this.close . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 11:15 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
AlexeiK, this.Close(); даст только то, что окно будет моргать бесконечно а не закрываться. Ну сами посмотрите , сначала мы присваиваем e.Cancel = true, потом в процессе вызываем Close(), и все начинается по новой. Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 11:39 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, ну че смекалка не пашет да? :) сделай bool smartflag=false; при входе если smartflag=true то пропускай весь свой код в closing, если false то исполняй. меняй значение smartflag на true когда анимация закончится. гость, ты иди поспи как человек. поешь белков. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 11:41 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
Спасибо, конечно за ответы, но я только начал изучать WPF, поэтому и обратился, чтобы мне внятно объяснили, а не тренировали мою смекалку. Без флагов что никак нельзя? Должно же быть какое то решение по аналогии с триггером на Loaded ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 12:11 |
|
Анимация закрытия окна
|
|||
---|---|---|---|
#18+
_гость?_, аналогии между loaded и unloaded нету. так как при том событии уничтожается объект. а при loaded он создается. с уничтоженным объектом производить анимацию смысла нету. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 12:24 |
|
|
start [/forum/topic.php?fid=21&msg=37805414&tid=1441795]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 156ms |
0 / 0 |