我在VIsual Studio输出面板中的WPF应用程序警告中观察到以下文字:
WPF动画警告:6:无法执行操作,因为 指定的Storyboard从未应用于此对象以进行交互 control.Action = '停止'; 故事板= 'System.Windows.Media.Animation.Storyboard'; Storyboard.HashCode = '65981734'的; Storyboard.Type = 'System.Windows.Media.Animation.Storyboard'; TargetElement = 'System.Windows.Controls.ContentPresenter'; TargetElement.HashCode = '49882372'; TargetElement.Type = 'System.Windows.Controls.ContentPresenter'
如何将HashCode反转为某个xaml元素?如何找到附加动画的位置?
提前致谢
答案 0 :(得分:5)
您可以使用以下代码查找StoryBoard:
private string GetStoryBoardNameByHashCode(int hashCode)
{
foreach (DictionaryEntry resource in Resources)
{
if (resource.Value is Storyboard)
{
if (resource.GetHashCode() == hashCode)
return ((Storyboard) resource.Value).Name;
}
}
return String.Empty;
}
执行如下方法:
string storyBoardName = GetStoryBoardNameByHashCode(65981734);
这应该能够使用HashCode获取StoryBoard-Name(如果你想获得指定的StoryBoard,你也可以返回它)。请注意,ResourceDictionary位于Window-scope(本地)上。因此,如果StoryBoards都位于Application(App.xaml)的ResourceDictionary中,那么将'Resources'更改为:
Application.Current.Resources
可能有另一种方法来获取WPF应用程序的所有资源,而不仅仅是本地或应用程序范围,但没有研究过。希望这段代码能让您找到问题所在。
以下是sample代码,以防您需要它!
答案 1 :(得分:2)
实际上,我遇到了和你一样的问题。
我发现动画的Begin()
方法在调用Stop()
方法之前没有被调用。因此Runtime抛出一个警告,指出无法调用Stop动作。
答案 2 :(得分:0)
我的问题是我的EventName中有一个尾随空格。
<interactivity:EventTrigger EventName="SelectionChanged ">
更改为
<interactivity:EventTrigger EventName="SelectionChanged">