ssKakarotto ss4team Ответов: 3

Показать пользовательский элемент управления срабатывает от другой пользовательских элементов управления в WPF с#


у меня есть в WPF-приложение на C# у меня есть два пользовательских элементов управления и файлы mainwindows, мой первый пользовательский элемент управления-это файл usercontrol1, которые держат мое меню с помощью одной кнопки и событие click, и у меня в сетке на мои файлы mainwindows имя uscholder загрузить usercontrol2, что я посылаю из события нажатия кнопки на мой файл usercontrol1

Что я уже пробовал:

public  partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();

            
        }
       
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            UserControl2 usc = new UserControl2();
            MainWindow maingrid = new MainWindow();

            if (maingrid.uscholder != null)
            {
                maingrid.uscholder.Children.Clear();
                maingrid.uscholder.Children.Add(usc);
            }
            else
            {
                maingrid.uscholder.Children.Add(usc);
            }


        }
    }

3 Ответов

Рейтинг:
2

OriginalGriff

Видеть здесь: Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^] - он основан на формах, но это точно такой же процесс для элементов управления.

Вы создаете событие в UserControl1, которое обрабатывает MainWindow. Когда пользователь нажимает кнопку в UserControl1, вы вызываете событие, и обработчик MainWindow выполняет работу с UserControl2.


Рейтинг:
1

Valteris Eidukevicius

Вместо сетки в этом случае рассмотрите возможность использования ContentControl

<ContentControl Name="CC"/>

а для С#
CC.Content = new UserControl2();


Рейтинг:
1

Valteris Eidukevicius

Итак, у вас есть MainWindow с UserControl1, и после нажатия кнопки на uc1 вы открываете другой MW с usc1 и заменяете его на usc2 в вашем недавно открытом окне?

private void Button_Click(object sender, RoutedEventArgs e)
{
    MainWindow maingrid = Application.Current.MainWindow as MainWindow;

    if (maingrid.uscholder.Children.Count > 0)
        maingrid.uscholder.Children.Clear();

    maingrid.uscholder.Children.Add(new UserControl2());
}


это то, чего ты хочешь ?