1
私はブレンドで作られたいくつかのxamlファイルを読み込むwpfアプリケーションで作業しています。私のアプリはxamlのアニメーションを個別に実行する必要があります。私はすでに行うUserControlに構文解析し、ユーザーコントロールを作成し、stroryboardsを作成し、xamlを配置します。私の問題は、xamlから取得したアニメーションを実行できず、userControlに追加されています。xamlをロードしてアプリケーションからアニメーションを実行しようとしています
また、私はコードを配置:
private void FillMenuWindow(ScreeningArea area)
{
string lData = null;
bool isCanvasAdded = false;
UserControl menuUserControl = new UserControl();
Canvas XAMLWindowCanvas = new Canvas();
XDocument xmlFile = new XDocument();
IEnumerable<XElement> elementList;
MemoryStream stream = null;
int initSide = 0;
menuStoryboardList.Clear();
if (area.CurrentItem != null)
{
SimpleDelegate resumedDelegate = delegate
{
string nameCounter;
string myStream;
string mystrName;
xmlFile = XDocument.Load(VideoMenuSystem.DataPath + "\\" + area.CurrentItem.ItemName + ".xaml");
StreamReader menuReader = new StreamReader(VideoMenuSystem.DataPath + "\\" + area.CurrentItem.ItemName + ".xaml");
myStream = menuReader.ReadToEnd();
TextToFile(myStream, VideoMenuSystem.DataPath + "\\" + "xamlFile.txt",false);
menuUserControl = new UserControl();
//this.RegisterName("Test", menuUserControl);
elementList = xmlFile.Root.Descendants();
foreach (XElement el in elementList)
{
mystrName = el.Name.LocalName;
switch (mystrName)
{
case "Storyboard":
lData = el.ToString();
TextToFile(lData, VideoMenuSystem.DataPath + "\\" + "storyBoardFile.txt", true);
stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(lData));
myStoryboard.Children.Add(XamlReader.Load(stream) as Storyboard);
break;
case "Canvas":
lData = el.ToString();
if (lData != null)
{
stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(lData));
XAMLWindowCanvas.Children.Add(XamlReader.Load(stream) as UIElement);
foreach (ScreeningArea sa in Screens)
{
if (sa == area)
{
initSide = menuSize.Width + screenSeparator;
break;
}
}
XAMLWindowCanvas.Margin = new Thickness(left, 0, 0, 0);
menuUserControl.Content = XAMLWindowCanvas;
left += initSide;
}
isCanvasAdded = true;
break;
}
if (isCanvasAdded)
break;
}
nameCounter = DateTime.Now.Ticks.ToString();
String myNameCounter = nameCounter.Substring(nameCounter.Length - 10);
menuUserControl.Resources.Add("SB_" + myNameCounter, myStoryboard);
menuStoryboardList.Add(myStoryboard);
playbackArea.Children.Add(menuUserControl);
playbackArea.Loaded += new RoutedEventHandler(fireAnimation);
};
Dispatcher.BeginInvoke(resumedDelegate);
}
}