如何从另一个应用程序调用WPF窗口?我想要一个包含所有窗口,视图模型和所谓的“序列”(控制窗口流的标准类)的UI.Resources
项目。最终,我将为要调用的UI进程调用正确的Sequence(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;
}
}
最佳答案
我只是做了非常相似的事情。我想分享我的方法。
这是方法。
我们将在XAML中使用System.Windows.Control.DockPanel。停靠面板可以动态加载不同的“用户控件”。用户控件与表单非常相似,我们可以在该表单上创建UI元素。在您的情况下,您要显示的对话的内容将进入此处。
步骤1
将此DockPanel放置在网格内。
<DockPanel x:Name="mainDockPanel">
</DockPanel>
第2步
下一步是创建不同的用户控件。
右键单击Visual Studio中的WPF项目->添加新的用户控件
确保新添加的用户控件的xaml.cs代码具有此功能
public partial class myUserControlUC : UserControl
从本质上讲,它应该派生自System.Windows.Controls.UserControl
使用用户控件的XAML,我们可以创建所需的任何精美的UI。
第三步
现在一切准备就绪,我们只需要致电
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;
}
关于c# - 如何从另一个应用程序打开WPF窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22310643/