2011-04-18 38 views
3

我试图使像信使程序WPF 我的解决方案包含的App.xaml & app.xaml.cs,mainwindow.xaml &主窗口访问变量隐藏XAML代码。 xaml.cs 和另外两个xaml页面第一个用于连接,第二个用于信使核心{contacts,status,.. etc} 我有一个agsxmpp库,可以帮助我连接 哪里是最好的.cs文件来定义和初始化连接 以及如何从另一个.cs文件访问它((及其事件处理程序))如何从另一个隐藏XAML代码

btw此问题总是面对我:(

回答

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(); 
     } 
    } 
} 

然后你就可以添加一个新的构造到窗口1类,因此你可以通过它,你需要引用的对象。

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(); 
} 
+0

@panamack:感谢您的评论,但你不明白我在所有 我在哪里可以把这个代码 **'公共XmppClientConnection客户端=新XmppClientConnection ();'** 从其他cs类访问它 – 2011-04-18 17:17:28

+0

@Ahmed我将更新我的代码,使其在上下文中清楚。 – Grokodile 2011-04-18 17:22:55

+0

@panamack 确定:)谢谢 – 2011-04-18 17:24:08