WPF Animation "Невозможно заморозить это дерево временного шкала раскадровки для использования по потокам"
В настоящее время у меня есть список, у которого есть выделенный элемент, привязанный к свойству в моей модели ViewModel. Всякий раз, когда выбранный элемент не является нулевым, я хочу выполнить анимацию. Тем не менее, я продолжаю получать следующую ошибку "Невозможно заморозить это дерево временного шкала раскадровки для использования по потокам" , а из исследования - понять, почему это происходит. Однако я не уверен, какой подход мне нужен, чтобы получить нужное мне поведение.
<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>
Ответы
Ответ 1
Можете ли вы разместить свою раскадровку? Похоже, у вас есть какое-то привязка в определении раскадровки.
Хорошо, поэтому, как я подозревал, это потому, что вы используете Binding
в своем Storyboard
. Вы не можете этого сделать, потому что WPF пытается заморозить все ресурсы, используемые шаблоном для эффективности, и когда вы используете привязку на Freezable
, в этом случае Storyboard
он предотвращает возможность замораживания.
Ответ 2
Существует метод, который можно использовать для решения проблемы Freezable , которая позволяет использовать привязку для значения "Кому" вашей анимации (а не жесткого кодирования значения там), Это довольно просто, и я описал его здесь.
Ответ 3
Старый вопрос, но может быть полезен для других людей.
Иногда создание раскадровки в кодировке может быть проще: fooobar.com/info/281703/...