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

标签 c# .net wpf

我正在尝试制作一个 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/

相关文章:

.net - Linux 的 DebugView 替代方案(单声道相关)

wpf - 给 WPF Grid 一个 ScrollViewer 减去滚动条的宽度

C# Comport - 可能丢失数据

c# - DropDownListFor 用于验证有问题的复杂模型

c# - 数据库设计头脑 Storm : Sale Prices

c# - 在 C# 中模拟 ImageLayout.Zoom

c# - MVVM进度栏和后台工作人员可见性

c# - 如何将服务器端属性值传递到 aspx 页面框架中加载的其他 htm 页面

c# - 托管的BackgroundService StopAsync 在等待后未执行

c# - 在C#中,事件是否保留对回调方法所在的整个类的引用?