我有一个WPF菜单应用程序,它调用WPF用户控件dll并且没有显示dll窗口。该DLL不需要参数,其窗口只有一个按钮。我在dll代码中添加了一个MessageBox来检查它是否正在加载它是否正确,但是窗口没有显示。
我正在使用VS 2015.名为Empresa.Reg的dll项目是使用C#Windows经典桌面WPF用户控件创建的(没有C#Windows WPF用户控件选择),它在菜单项目中引用,其输出为班级图书馆。名为MenuDePruebas Ouput的菜单项目是Windows应用程序。任何帮助将不胜感激。
这是Menu 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();
}
}
}
这是WPF用户控件DLL代码:
...
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)
{
}
}
}
答案 0 :(得分:0)
我想我已经找到了一个解决方案,在菜单exe中为dll用户控件创建一个新窗口,如下所示,我认为这是一个自动的东西。如果有更好的解决方案,我很高兴告诉我。感谢。
private void BtnRegEmpresa_Click(object sender, RoutedEventArgs e)
{
Window UserControlNewWindow = new Window
{
Title = "Some Title", Content = new UserControl1()
};
UserControlNewWindow.ShowDialog();
}
答案 1 :(得分:0)
一个简单的方法:
在窗口的ur xaml中添加一个ContentControl
当你点击菜单时将相应的usercontrol放入contentcontrol
<ContentControl x:Name="CntUsercontrol"/>
在代码背后
CntUserControl.Content = new UserControl();
如果使用MVVM,则可以使用DataTemplate基于viewmodel切换视图。
希望这有帮助