在代码中设置Storyboards TargetName

时间:2010-11-09 20:43:48

标签: wpf silverlight

Silverlight 4,但我不确定这是否也适用于WPF。

这是我必须通过控件循环并为其设置动画的一些代码。第一个完美,但第二次我得到了

  

System.InvalidOperationException:2218发生错误。 ...在MS.Internal.XcpImports.SetValue(...

似乎不喜欢第二次设置目标名称。我也试过这行:

sbShowPopup.SetValue(Storyboard.TargetNameProperty, toPopup.Name);

代码(它有点难看 - 只是现在尝试做POC):

        Messenger.Default.Register<Item>(this, "O", I => {
            if (AvailablePopups.Peek() == null) {
                MessageBox.Show("Nothing available");
                return;
            }

            Control toPopup = AvailablePopups.Pop();
            toPopup.DataContext = I;

            try {
                Storyboard.SetTargetName(sbShowPopup, toPopup.Name);
            } catch (Exception E) {
                MessageBox.Show(E.ToString());
            }

            this.sbShowPopup.Begin();
        });

1 个答案:

答案 0 :(得分:1)

如果其他人偶然发现,您必须在将目标设置为其他内容之前停止动画:

sbShowPopup.Stop();