我有一个 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)
{
}
}
}
我想我已经找到了一个解决方案,为菜单exe中的dll用户控件创建一个新窗口,如下所示,我认为这是一个自动的事情。 如果有更好的解决方案,我很感激让我知道。谢谢。
private void BtnRegEmpresa_Click(object sender, RoutedEventArgs e)
{
Window UserControlNewWindow = new Window
{
Title = "Some Title", Content = new UserControl1()
};
UserControlNewWindow.ShowDialog();
}
一个简单的方法:
在窗口的 xaml 中添加一个 ContentControl
当您单击菜单时,将相应的用户控件放入内容控件中
<ContentControl x:Name="CntUsercontrol"/>
在代码后面
CntUserControl.Content = new UserControl();
如果您使用 MVVM,您可以使用 DataTemplate 根据视图模型切换视图。
希望这有帮助