Исчезает и исчезает тропинка в Серебряном свете?
У меня есть путь, определенный следующим образом:
<Viewbox Visibility="Collapsed" x:Name="Tick" Grid.Column="1" Grid.Row="1">
<Canvas MaxWidth="100" MaxHeight="100" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="100" Height="100" Canvas.Left="0" Canvas.Top="0">
<Path ...Fill="#FF00B800" x:Name="MyPath" (path dimensions, lines, etc) .../>
</Canvas>
</Viewbox>
Теперь то, что я хотел бы сделать, это манипулировать заполнением таким образом, что это приведет к тому, что путь будет иметь эффект затухания/затухания. В основном сделать заливки Альфа-компонент либо двигаться в сторону непрозрачного или прозрачного в зависимости от того, является ли поле просмотра путь внутри видимым. Поэтому, когда видимый путь исчезает, когда свернутый путь исчезает.1 ответ:
Эффект, которого вы пытаетесь достичь, классный, но есть серьезная проблема с вашим текущим планом. Когда
Visibility
элемента более высокого уровня,Viewbox
в этом случае, устанавливается вVisibility.Collapsed
, Элемент и все подэлементы немедленно перестают быть видимыми. Именно в этот момент Вы хотите, чтобы началось затуханиеPath
.Таким образом,
Path
уже не видно, и запуск анимации для постепенного уменьшения ее непрозрачности не принесет никакой пользы, потому что она уже исчезла. В других словом, к тому времени, когда видимость установлена вVisiblity.Collapsed
, уже слишком поздно делать что-либо полезное с вещами внутри элемента, потому что пользователь их не увидит. Если бы вы могли, вы бы хотели заглянуть в будущее и знать, что вы собираетесь изменить видимость и запустить анимацию, чтобы она закончилась до того, как вы "закроете занавес" на элементе.Та же проблема не применима к тому, когда мы делаем элемент видимым, потому что все идеально: мы становимся видимыми и начинаем исчезающая анимация. Но поскольку половина эффекта не сработает, у нас все равно остается большая проблема.
Решение этой проблемы состоит в том, чтобы переместитьна уровень выше и посмотреть, что мы пытаемся сделать. В XAML у нас есть только пассивные элементы,
Viewbox
,Canvas
, иPath
. Но, возможно, они действуют больше как элементы управления или вспомогательные элементы управления, например, будучи проверкой для элемента управленияCheckBox
или похожего на флажок элемента управления.Элемент управления может иметь состояния:
- нормальный, Наведение курсора мыши
- Нажата, Отключена
- Несфокусированный, Сфокусированный
И эти состояния могут иметь эффекты перехода, благодаря
Таким образом, если эффекты затухания и затухания являются частью управляющего поведения , то у нас есть целый сложный мощный набор инструментов, доступных для решения нашей проблемы. Я не знаю, так ли это в вашей ситуации.VisualStateManager
.Даже если это не так, очень действенный подход к эффектам перехода на Silverlight заключается в том, чтобы преобразуйте свои элементы в бесформенный контроль, исключительно с целью использования
VisualStateManager
, потому что это делает вещи настолько легкими. Возможно, эта альтернатива может сработать в вашей ситуации.