#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. Я попробую, спасибо.