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

问题描述 投票:0回答:2

我有一个 WPF 菜单应用程序,它调用 WPF 用户控件 dll,但 dll 窗口未显示。该dll不需要参数,其窗口只有一个按钮。我在 dll 代码中添加了一个 MessageBox 来检查它是否正在加载,确实加载了,但窗口没有显示。

我使用的是VS 2015。名为 Empresa.Reg 的 dll 项目是使用 C# Windows Classic Desktop WPF User Control 创建的(没有 C# Windows WPF User Control 选择),它在 Menu 项目中引用,其输出是 Class Library 。名为 MenuDePruebas 的菜单项目输出是 Windows 应用程序。任何帮助将不胜感激。

这是菜单执行代码:

    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)
        {
            
        }
    }
}
c# .net wpf dll user-controls
2个回答
0
投票

我想我已经找到了一个解决方案,为菜单exe中的dll用户控件创建一个新窗口,如下所示,我认为这是一个自动的事情。 如果有更好的解决方案,我很感激让我知道。谢谢。

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

        UserControlNewWindow.ShowDialog();
    }

0
投票

一个简单的方法:

在窗口的 xaml 中添加一个 ContentControl

当您单击菜单时,将相应的用户控件放入内容控件中

<ContentControl x:Name="CntUsercontrol"/>

在代码后面

CntUserControl.Content = new UserControl();

如果您使用 MVVM,您可以使用 DataTemplate 根据视图模型切换视图。

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.