如何从第二个 Window 访问 MainWindow 的变量

How to access MainWindow's variables from second Window

除了 :

之外,还有其他访问 MainWindowpublic 变量的方法吗
MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
mainWindow.variable....

这工作正常,但我正在创建一个 WPF 应用程序并将 USB Webcam 集成到我的项目中,并使用上面的代码访问 MainWindow 的变量。这会导致一些问题,例如当我关闭 MainWindow 时程序仍然是 运行 并且相机不会停止。 有什么建议吗?

如果您正在开发一个 dll,这种方法也适用(您不能告诉 Application.Current.MainWindow,这比您的尝试更清楚)

DependencyObject ucParent = this.Parent;
        while (!(ucParent is MainWindow))

        {
            ucParent = LogicalTreeHelper.GetParent(ucParent);
        }
        mainview = ucParent as MainWindow;

你可以把它打包到一个方法中,保存你需要的变量,你应该不会有问题

要确保您的应用程序在 MainWindow 关闭时关闭:

public MainWindow()
    {
        InitializeComponent();
        this.Closing += (sender, args) => Application.Current.Shutdown();
    }

这是我在评论中写的一个过度简化的例子(你真的应该看看mvvm下面的例子是不是 mvvm)。

public class SelectedIndexData
{
    public int SelectedIndex { get; set; }
}

public partial class MainWindow : Window
{

    private readonly SelectedIndexData _selectedIndexData = new SelectedIndexData();
    public MainWindow()
    {
        InitializeComponent();
    }


    private void ComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        _selectedIndexData.SelectedIndex = ComboBox.SelectedIndex;
    }


    private void ShowChildWindow(object sender, RoutedEventArgs e)
    {
       new ChildWindow(_selectedIndexData).Show();
    }
}

public partial class ChildWindow : Window
{
    private SelectedIndexData _selectedIndexData;
    public ChildWindow(SelectedIndexData selectedIndexData)
    {
        InitializeComponent();
        _selectedIndexData = selectedIndexData; // do whatever you want with your data here

    }
}