たくさんのボタンを含む UniformGrid があり、UniformGrid が最初に表示されると、各ボタンのアニメーションが循環して表示されます。これはすべて正常に機能しますが、ユーザーが特定のボタンを押すと、すべてのボタンがグリッドから削除され、いくつかの新しいボタンが作成され、再びアニメーション化されます。
コードでボタンを作成する方法は次のとおりです
int ModelsAnimateIndex = 0; // Index of button to animate
private void GetModels()
{
DirectoryInfo di = new DirectoryInfo(Globals.ModelsPath);
FileInfo[] fis = di.GetFiles();
// ugModels is the UniformGrid
switch (fis.Length)
{
case 1:
ugModels.Rows = 1;
ugModels.Columns = 1;
break;
case 2:
ugModels.Rows = 1;
ugModels.Columns = 2;
break;
case 3:
case 4:
ugModels.Rows = 2;
ugModels.Columns = 2;
break;
case 5:
case 6:
ugModels.Rows = 2;
ugModels.Columns = 3;
break;
case 7:
case 8:
case 9:
ugModels.Rows = 3;
ugModels.Columns = 3;
break;
default:
break;
}
foreach (FileInfo s in fis)
{
ugModels.Children.Add(new Button()
{
Background = ThemeColour, // SolidBrush
Foreground = new SolidColorBrush(Colors.White),
Name = "btn" + s.Name.Split('.')[0].Replace(" ",""),
Style = MainButtonStyle, // Button Style
Content = s.Name.Split('.')[0]
});
}
}
そして今、新しく作成されたボタンのアニメーションを開始するボタンクリックイベント
private void btnModelSelect_Click(object sender, System.Windows.RoutedEventArgs e)
{
// TODO: Add event handler implementation here.
sbShowMenuButton.Completed += new EventHandler(sbShowModels_Completed);
Storyboard.SetTargetName(sbShowMenuButton.Children[0], ((Button)ugModels.Children[ModelsAnimateIndex]).Name);
Storyboard.SetTargetName(sbShowMenuButton.Children[1], ((Button)ugModels.Children[ModelsAnimateIndex]).Name);
Storyboard.SetTargetName(sbShowMenuButton.Children[2], ((Button)ugModels.Children[ModelsAnimateIndex]).Name);
sbShowMenuButton.Begin((Button)ugModels.Children[ModelsAnimateIndex]); // Error is here
}
最初のボタンがアニメーション化しようとすると、次のエラーが発生します
'btnTestModel' 名が 'System.Windows.Controls.Button' の名前スコープで見つかりません。