如何从另一个in-behind xaml代码中访问变量in-behind xaml代码

时间:2011-04-18 16:43:47

标签: c# .net wpf

我正在努力制作一个信使程序WPF 我的解决方案包含app.xaml& app.xaml.cs,mainwindow.xaml& mainwindow.xaml.cs 另外两个xaml页面首先用于连接,第二个用于messenger核心{contacts,status,.. etc} 我有一个agsxmpp库,可以帮助我连接 哪个是最好的.cs文件来定义和初始化连接 以及如何从另一个.cs文件访问它((及其事件处理程序))

btw这个问题总是面对我:(

1 个答案:

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