如何访问主窗口中的变量来自第二个窗口

是否有另一种方式来访问MainWindowpublic变量比:如何访问主窗口中的变量来自第二个窗口

MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault(); 

mainWindow.variable....

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

回答:

这个我这是我在评论中写的一个简单的例子(你真的应该看看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

}

}

回答:

这种方法工作还,如果你正在开发一个DLL(你不能告诉Application.Current.MainWindow,这是更清晰那么你尝试反正一样)

DependencyObject ucParent = this.Parent; 

while (!(ucParent is MainWindow))

{

ucParent = LogicalTreeHelper.GetParent(ucParent);

}

mainview = ucParent as MainWindow;

您可以打包这里面一个方法,节省您需要的变量,当主窗口被关闭,你应该不会有问题

回答:

为了确保您的应用程序关闭:

public MainWindow() 

{

InitializeComponent();

this.Closing += (sender, args) => Application.Current.Shutdown();

}

以上是 如何访问主窗口中的变量来自第二个窗口 的全部内容, 来源链接: utcz.com/qa/261380.html

回到顶部