【发布时间】:2018-05-31 22:29:13
【问题描述】:
我已经尝试了 4 天,请帮助我。
我有一个故事板,一切都很好,直到我需要将触发操作从按钮单击更改为绑定布尔变量。 这一切都写在一个模板中,我想这会使任务变得更加复杂。 代码是(它仍然有效):
<Border x:Name="panelControl" Grid.RowSpan="4" Margin="0,0,-450,0" VerticalAlignment="Stretch" HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Width="450" Height="275" DataContext="{Binding CurrentPanelViewModel}" >
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Border.RenderTransform>
<Canvas Background="#FFC6E8E6">
...
</Canvas>
</Grid>
</Border>
<Grid.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="AddButton2">
<BeginStoryboard Name="StartStoryboard">
<Storyboard SpeedRatio="12" TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
<DoubleAnimation
Storyboard.TargetName="panelControl"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
Duration="0:0:005" From="0" To="-700" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
现在我写了。
<Border x:Name="panelControl" Grid.RowSpan="4" Margin="0,0,-450,0" VerticalAlignment="Stretch" HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" Width="450" Height="275" DataContext="{Binding Path=Controller.LegViewModel.CurrentPanelViewModel}" >
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Border.RenderTransform>
<Grid.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path = PanelOpened}">
<DataTrigger.EnterActions>
<BeginStoryboard >
<Storyboard SpeedRatio="12" TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
<DoubleAnimation
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
Duration="0:0:005" From="0" To="-700" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<!--<DataTrigger.ExitActions>
you could animate close too if you wanted
</DataTrigger.ExitActions>-->
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Canvas Background="#FFC6E8E6">
....
</Canvas>
</Grid>
</Border>
然后什么也没有发生。尽管我检查了 PanelOpened 通知。
---------更新-----------
我将 Value="True" 添加到 DataTrigger,现在我的 OnPropertyChanged 出现错误(当 propertyName = PanelOpened 时):
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
//если PropertyChanged не нулевое - оно будет разбужено
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public bool PanelOpened
{
get { return _panelOpened; }
set
{
_panelOpened = value;
OnPropertyChanged();
}
}
错误: System.InvalidOperationException:“[Unknown]”属性未指向路径“(0).(1)[3].(2)'中的 DependencyObject。”
【问题讨论】:
标签: c# wpf storyboard datatrigger