私は4日間動作させようとしています。DataTriggerとStoryboardで何か問題があります
私はストーリーボードを持っていて、トリガーアクションをボタンクリックからブール変数のバインディングに変更する必要があるまでは、すべてうまくいきました。 すべてがテンプレートで書かれているので、タスクが複雑になると思います。 コードだった(と、それはまだ動作します):
<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が通知することを確認しました。
---------- UPDATE -----------
私はDataTriggerへ=値 "true" を追加し、今私は時に(私のOnPropertyChangedを中にエラーが発生していますプロパティ名= 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: '' [不明]」プロパティが '(0)(1)[3](2)。。' パス内のDependencyObjectを指していません。
thx、今私は別の問題に直面しました –
質問に壊れたものではなく、実際のXAMLを投稿してください。私はそれをテストするためにそれを修正しなければならなかった。 –