WPF-Animation "Dieser Storyboard-Timeline-Baum kann nicht über Threads hinweg eingefroren werden"
Momentan habe ich eine listbox, deren ausgewählte Element an eine Eigenschaft an meinem ViewModel. Wenn das ausgewählte Element nicht null ist, will ich eine animation durchzuführen. Aber ich bekomme immer folgenden Fehler "kann Nicht einfrieren, das Storyboard timeline-Baum für die Verwendung in threads" und aus der Forschung verstehen, warum dies geschieht. Aber ich bin mir nicht sicher welchen Ansatz ich nehmen muss um das Verhalten, das ich will.
<Storyboard x:Key="ShowItemEdit">
<DoubleAnimation
Storyboard.TargetName="lstItemList"
Storyboard.TargetProperty="ListBox.Width"
To="{Binding ActualWidth, ElementName=UserControl}"
Duration="0:0:0.40" />
...
</Storyboard>
<Style x:Key="ListStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem, Converter={StaticResource IsNullConverter}}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource ShowItemEdit}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
<ListBox x:Name="lstItemList" Style={StaticResource ListStyle}" SelectedItem="{Binding SelectedItem}">
...
</ListBox>
InformationsquelleAutor der Frage jwarzech | 2009-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Ihre Storyboard? Es klingt wie Sie haben irgendeine Art von Bindung in der Storyboard-definition.
Ok so, wie ich vermutete, es liegt daran, dass man mit einem
Binding
in IhremStoryboard
. Sie können das nicht, weil WPF versucht freeze alle Ressourcen genutzt, indem eine Vorlage für Effizienz und wenn Sie eine BindungFreezable
in diesem Fall dieStoryboard
es verhindert, dass Sie in der Lage, eingefroren zu werden.InformationsquelleAutor der Antwort Drew Marsh
Es ist eine Technik, die Sie verwenden können, um rund um die Freezable-Problem mit dem Sie eine Bindung für die "Bis" - Wert der animation (eher als hart codierte Wert dort). Seine ziemlich einfach, und die ich umrissen habe es hier.
InformationsquelleAutor der Antwort Jason Frank
Alte Frage, aber könnte nützlich sein für andere Menschen.
Manchmal erstellen das Storyboard in der code-behind-kann einfacher sein: https://stackoverflow.com/a/10848781/779521
InformationsquelleAutor der Antwort Sverrir Sigmundarson