我在VIsual Studio输出面板中的WPF应用程序警告中观察到以下文本:
WPF动画警告:6:无法执行操作,因为指定的Storyboard从未应用于此对象以进行交互式控制.Action ='Stop'; 故事板= '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元素?如何找到附加动画的位置?
提前致谢
您可以使用以下代码查找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;
}
Run Code Online (Sandbox Code Playgroud)
像这样执行方法:
string storyBoardName = GetStoryBoardNameByHashCode(65981734);
Run Code Online (Sandbox Code Playgroud)
这应该能够使用HashCode获取StoryBoard-Name(如果你想获得指定的StoryBoard,你也可以返回它).请注意,ResourceDictionary位于Window-scope(本地)上.因此,如果StoryBoards都位于Application(App.xaml)的ResourceDictionary中,那么将'Resources'更改为:
Application.Current.Resources
Run Code Online (Sandbox Code Playgroud)
可能有另一种方法来获取WPF应用程序的所有资源,而不仅仅是本地或应用程序范围,但没有研究过.希望这段代码可以让您找到问题所在.
这是示例代码,以防您需要它!