0
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
}
は、最初のボタンは、私が手アニメーション化しようとすると、新しく作成されたボタンをアニメーションを開始するボタンクリックイベントを作成する方法であります次のエラー
'System.Windows.Controls.Button'の名前スコープに 'btnTestModel'の名前が見つかりません。
がSetTargetNameの代わりにがsetTargetを使用してみてください設定を変更します。とにかくオブジェクトへの参照があるので、なぜWPFを参照する必要がありますか? –
SetTargetに変更するとBeginで次のエラーが発生します。 '[Unknown]'プロパティはパス '(0)。(1)[0]。(2)'のDependencyObjectを指していません。 – Gaz83