У меня есть динамически созданная кнопка, и она была нажата, поэтому мы находимся в событии click для кнопки, которая была создана во время выполнения. В рамках события click я создал новую кнопку и хочу заменить кнопку отправителя новой кнопкой.
Отправитель находится в WrapPanel в раскрывающемся списке MahApps.Metro (вероятно, не относящаяся к делу информация, но для уточнения.
Итак, в двух словах:
Замените myOldButton (который является кнопкой отправителя) на myNewButton, который создается динамически.
АЛЬТЕРНАТИВА:
Что я действительно пытаюсь получить, так это свойство переднего плана iconPacks: значок PackIconMaterial, который находится внутри кнопки (см. https://github.com/MahApps/MahApps.Metro.IconPacks). x: Имя динамического значка может быть получено из имени кнопка отправителя, если это полезно, но я не могу получить свойство foreground значка iconpacks, поэтому я подумал о том, чтобы просто заменить элемент управления новым элементом управления, таким же, как исходная кнопка. Вот динамически созданная кнопка :
// Create a stringBuilder
StringBuilder sb = new StringBuilder();
// use xaml to declare a button as string containing xaml
sb.Append(@"<Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:iconPacks='http://metro.mahapps.com/winfx/xaml/iconpacks'
Width='85' Margin='4' Padding='3'>
<WrapPanel Margin='0'>
<iconPacks:PackIconMaterial Kind='BedEmpty' VerticalAlignment='Center' Foreground='Green'/>
<Label Content='dynamicBedName' FontSize='12'/>
<iconPacks:PackIconMaterial x:Name='dynamicIconName' Kind='RadioboxMarked' Height='12' Width='12'
Margin='0' Foreground='Green' VerticalAlignment='Center'/>
</WrapPanel >
</Button>");
//Replace the placeholder Button.Name
sb.Replace("dynamicBedName", thisBed);
//Replace the placeholder IconPacks:PackIconMaterial x:Name
string iconName = "icon" + thisBed;
sb.Replace("dynamicIconName", iconName);
// Create button using a XamlReader
Button myButton = (Button)XamlReader.Parse(sb.ToString());
//Replace placeholder Label on Button
myButton.Name = "_" + thisBed + "_btn";
//Add a ToolTip to each button specific to this button
myButton.ToolTip = thisBed;