我正在尝试制作一个 WPF 信使程序 我的解决方案包含 app.xaml & app.xaml.cs , mainwindow.xaml & mainwindow.xaml.cs 还有另外两个 xaml 页面,第一个用于连接,第二个用于 Messenger 核心 { contacts , status , .. etc } 我有一个 agsxmpp 库可以帮助我连接 定义和初始化连接的最佳 .cs 文件在哪里 以及如何从另一个 .cs 文件访问它((及其事件处理程序))
顺便说一句,我总是面临这个问题:(
最佳答案
默认的 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 并改为使用 Startup 事件,以便您可以手动创建主窗口。
<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();
}
关于c# - 如何从另一个 in-behind xaml 代码访问变量 in-behind xaml 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706098/