У меня есть переменная, называемая IsDone в ViewModel. Я хочу прикрепить новую раскадровку, когда IsDone изменил значение. Это выглядит как процесс загрузки, запускает анимацию при нажатии кнопки, ждет чего-то и затем устанавливает IsDone верно, чтобы вызвать StopAni. Проблема заключается в том, что border3 не отображается, когда IsDone is true. Все идеи, спасибо. Кнопка шаблона:DataTrigger и приложить новую раскадровку
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid>
<Canvas>
<Ellipse x:Name="border1" Width="100" Height="100"/>
<Ellipse x:Name="border2" Width="90" Height="90"/>
<Ellipse x:Name="border3" Width="50" Height="50"/>
</Canvas>
<ContentPresenter />
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsDone}" Value="false">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource StartAni}"/>
</DataTrigger.EnterActions>
<DataTrigger Binding="{Binding IsDone}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource StopAni}"/>
</DataTrigger.EnterActions>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
StartAni:
<Storyboard x:Key="StartAni">
<DoubleAnimation
Storyboard.TargetName="border2"
Storyboard.TargetProperty="StrokeThickness" To="0" Duration="0:0:0.2"/>
</DoubleAnimation>
<ColorAnimation
Storyboard.TargetName="border2"
Storyboard.TargetProperty="(Ellipse.Stroke).(SolidColorBrush.Color)"
To="Grey" Duration="0">
</ColorAnimation>
<DoubleAnimation
Storyboard.TargetName="border3"
Storyboard.TargetProperty="StrokeThickness"
From="0.0" To="5.0" Duration="0"/>
</Storyboard>
Стопани:
<Storyboard x:Key="StopAni">
<DoubleAnimation
Storyboard.TargetName="border2"
Storyboard.TargetProperty="StrokeThickness" To="5" Duration="0:0:2.5"/>
<ColorAnimation
Storyboard.TargetName="border2"
Storyboard.TargetProperty="(Ellipse.Stroke).(SolidColorBrush.Color)"
To="LightGreen" Duration="0"/>
<DoubleAnimation
Storyboard.TargetName="border3"
Storyboard.TargetProperty="StrokeThickness"
From="5.0" To="0.0" Duration="0:0:0.2"/>
</Storyboard>
ViewModel:
bool isDone;
public bool IsDone {
set {
isDone = value;
OnPropertyChanged("IsDone");
}
get {
return isDone;
}
}
Вы не можете указать Имя_целевого_объекта в раскадровке, определенной в стиле. Теперь, когда вы объявили свой DataTriggers. – AnjumSKhan
Да, 3 эллипса в бутоне Шаблон. Они: .... @ AnjumSKhan –
Jandy
обновил ваш вопрос правильно plz – AnjumSKhan