@Laguna_Seca

(WPF/C#) Получение Content из одной кнопки удаляет Content из другой. В чем проблема?

Задача состоит вот в чем. Есть 2 панели, левая и правая. В левой колонке динамично загружаются кнопки-картинки (имеется ввиду фон кнопок) . При нажатии на кнопку, в правой панели создается копия нажатой кнопки.
Проблема: у исходной кнопки пропадает картинка с фона.

Кнопки я создаю так:
foreach (FileInfo f in natureAnimalsFileInfo)
            {

                Button natureAnimalsSmileButton = new Button
                {
                    Width = 60,
                    Height = 60,
                    Name = "s_" + f.Name.Replace(".png","") + "",
                    Content = new Image
                    {
                        Source = new BitmapImage(new Uri(Directory.GetCurrentDirectory() + "\\smiles\\NatureAnimals\\" + f.Name)),
                        VerticalAlignment = VerticalAlignment.Center
                    }
                };
                natureAnimalsSmileButton.Click += button1_Click;
                NatureAnimals.Items.Add(natureAnimalsSmileButton);

            }


Код нажатия на кнопку:

private void button1_Click(object sender, RoutedEventArgs e)
        {
            var Name = (e.Source as Button).Name.ToString();
            var Content = (e.Source as Button).Content;

            Button button = new Button
            {
                MinWidth = 60,
                Width = 60,
                Height = 60,
                Name = Name,
                Content = Content
            };

            Test.Items.Add(button);
            /*
            Button button = new Button();
            button.Name = Name;
            button.Content = Content;
            button.Width = 60;
            button.Height = 60;
            Test.Items.Add(button);
            */
        }


По сути должна создаваться новая кнопка, не пойму в чем проблема.
  • Вопрос задан
  • 630 просмотров
Решения вопроса 1
@Sumor
Проблема в том, что Content у кнопки - это Image (контрол). У контрола может быть только один родитель, и когда вы присваиваете его другой кнопке он просто меняет родителя - с одной кнопки на другую. Поэтому у первой кнопки изображение пропадает.
При создании кнопки визуальные элементы (Image) нужно создавать заново. А вот загруженную картинку (BitmapImage) )можно использовать ту, которая уже загружена.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы