从exe应用程序调用时,不显示Wpf dll用户控制窗口

时间:2016-10-22 18:31:44

标签: c# .net wpf dll user-controls

我有一个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)
    {

    }
}

}

2 个答案:

答案 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基于v​​iewmodel切换视图。

希望这有帮助