因为我只能在运行时知道KeyTime
,并且不能在那里绑定,所以我在代码中构建了故事板。它可以正常工作。
bu我对StopStoryboard
有问题。每当出口触发器发生时,我都会得到:
名称在" system.windows.style"的名称范围中找不到。
这是我正在使用的代码:
private static void InjectStorybord(Hourglass originator)
{
Storyboard sb = GetStoryboard(originator);
originator.Resources["MainStory"] = sb;
Binding runningBinding = GetBinding(originator);
DataTrigger trigger = new DataTrigger() { Binding = runningBinding, Value = true };
BeginStoryboard begineStory = new BeginStoryboard() { Storyboard = sb, Name = BEGIN_MAIN_NAME };
begineStory.SetValue(FrameworkElement.NameProperty, BEGIN_MAIN_NAME);//Trying this to achive x:Name not helping eithre
trigger.EnterActions.Add(begineStory);
trigger.ExitActions.Add(new StopStoryboard() { BeginStoryboardName = begineStory.Name });
Style beginStoryStyle = new Style(typeof(Grid));
beginStoryStyle.Triggers.Add(trigger);
originator.layoutRoot.Style = beginStoryStyle;
}
尝试使用RegisterName
方法
Style beginStoryStyle = new Style(typeof(Grid));
beginStoryStyle.RegisterName(BEGIN_MAIN_NAME, begineStory);
beginStoryStyle.Triggers.Add(trigger);