我正在努力制作一个信使程序WPF 我的解决方案包含app.xaml& app.xaml.cs,mainwindow.xaml& mainwindow.xaml.cs 另外两个xaml页面首先用于连接,第二个用于messenger核心{contacts,status,.. etc} 我有一个agsxmpp库,可以帮助我连接 哪个是最好的.cs文件来定义和初始化连接 以及如何从另一个.cs文件访问它((及其事件处理程序))
btw这个问题总是面对我:(
答案 0 :(得分:0)
默认的WPF模板如下所示,带有 StartupUri 属性。
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
</Application.Resources>
</Application>
您需要删除 StartupUri 并使用启动事件,以便您可以手动创建主窗口。
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources>
</Application.Resources>
</Application>
namespace WpfApplication1
{
public partial class App : Application
{
private XmppClientConnection _client = new XmppClientConnection ( );
private void Application_Startup(object sender, StartupEventArgs e)
{
var mainWindow = new Window1();
mainWindow.Show();
}
}
}
然后,您可以向Window1类添加一个新的构造函数,以便您可以将它传递给您需要引用的对象。
public partial class Window1 : Window
{
private XmppClientConnection _client;
public Window1()
{
InitializeComponent();
}
public Window1(XmppClientConnection client):this()
{
_client = client;
}
}
像这样:
private void Application_Startup(object sender, StartupEventArgs e)
{
_client = new XmppClientConnection();
var mainWindow = new Window1(client);
mainWindow.Show();
}