Окно пользовательского управления Wpf dll не отображается при вызове из exe-приложения

#c# #.net #wpf #dll #user-controls

#c# #.net #wpf #dll #пользовательские элементы управления

Вопрос:

У меня есть приложение меню WPF, которое вызывает библиотеку dll пользовательского управления WPF, и окно dll не отображается. Библиотека dll не требует параметров, и в ее окне есть только одна кнопка. Я добавил MessageBox в dll-код, чтобы проверить, загружается ли он, и это происходит, но окно не отображается.

Я использую VS 2015. Проект dll с именем Empresa.Reg был создан с использованием C # Windows Classic Desktop WPF User Control (в C # Windows WPF User Control нет выбора), на него есть ссылка в меню project, а его выходом является библиотека классов. Проект меню с именем MenuDePruebas Ouput является приложением Windows. Будем признательны за любую помощь.

Это exe-код меню:

….

 using System.Windows;
using Empresa.Reg;

namespace MenuDePruebas

{
   public partial class MainWindow : Window

{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void BtnRegEmpresa_Click(object sender, RoutedEventArgs e)
    {
        UserControl1 algo = new UserControl1();
    }
}
  

}

И это код DLL пользовательского управления WPF:

….

 using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Empresa.Reg
{
/// <summary>
/// Interaction logic for UserControl1.xaml
/// </summary>

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
        MessageBox.Show("Testing");  // This line works as expected

    }
    private void button_Click(object sender, RoutedEventArgs e)
    {

    }
}
  

}

Ответ №1:

Я думаю, что нашел решение, создающее новое окно для пользовательского управления dll в меню exe следующим образом, что, как я думал, было автоматическим. Если есть лучшее решение, я был бы признателен, если бы вы дали мне знать. Спасибо.

 private void BtnRegEmpresa_Click(object sender, RoutedEventArgs e)
    {
        Window UserControlNewWindow = new Window
            {
            Title = "Some Title", Content = new UserControl1()
            };

        UserControlNewWindow.ShowDialog();
    }
  

Ответ №2:

Один простой способ:

в ur xaml окна добавьте ContentControl

когда вы нажимаете меню, поместите соответствующий usercontrol в contentcontrol

 <ContentControl x:Name="CntUsercontrol"/>
  

В коде, находящемся за

 CntUserControl.Content = new UserControl();
  

Если вы используете MVVM, вы можете переключать представления на основе viewmodel с помощью DataTemplate.

Надеюсь, это поможет

Комментарии:

1. Я попробую, спасибо.