如何从其他应用程序调用WPF窗口?我希望有一个UI.Resources
项目,包含所有窗口,视图模型,以及我称之为“序列”(控制窗口流程的标准类)。最后,我会调用我想要调用的UI进程的正确序列(Login
,GetLocale
等)。然后,“序列”类将创建所有资源,并处理显示和隐藏正确的Windows以完成任务。不幸的是,在下面的示例中,所需的窗口永远不会显示。该应用只会挂在ShowDialog()
来电:
public static bool Process(ClientLibrary client,
out Country country, out State state, out City city,
out string errorMessage)
{
country = null;
state = null;
city = null;
errorMessage = null;
try
{
if (client == null) { errorMessage = "Internal Error: Client not supplied"; }
var model = new LocaleSelectHeirarchyViewModel(client);
var window = new LocaleSelectHeirarchyWindow(model);
var result = window.ShowDialog();
window.Close();
window = null;
if (result == null || !result.Value || model.SelectedCity == null)
{
return false;
}
country = model.SelectedCountry;
state = model.SelectedState;
city = model.SelectedCity;
return true;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
errorMessage = "Internal Error: Client threw an exception";
return false;
}
}
答案 0 :(得分:1)
我做了一件非常相似的事情。我想分享一下有效的方法。 这是方法。 我们将在XAML中使用System.Windows.Control.DockPanel。停靠面板可以动态加载不同的“用户控件”。用户控件与表单非常相似,我们可以在表单上创建UI元素。在您的情况下,您要显示的对话内容将在此处显示。
第1步
将此DockPanel放在网格中。
<DockPanel x:Name="mainDockPanel">
</DockPanel>
第2步
下一步是创建不同的用户控件。 右键单击visual studio中的WPF项目 - &gt;添加新用户控件
确保新添加的用户控件的xaml.cs代码具有此
public partial class myUserControlUC : UserControl
基本上它应该来自System.Windows.Controls.UserControl 使用用户控件的XAML,我们可以创建我们需要的任何花哨的UI。
第3步
现在一切准备就绪,我们只需要打电话
mainDockPanel.Children.Add(new myUserControlUC());
这可以放在开关内,以在不同条件下显示不同的东西 例如
mainDockPanel.Children.Clear();
switch (i)
{
case 1:
mainDockPanel.Children.Add(new ToolKitUC1());
break;
case 2:
mainDockPanel.Children.Add(new ToolKitUC2());
break;
case 3:
mainDockPanel.Children.Add(new ToolKitUC3());
break;
}