如何访问主窗口中的变量来自第二个窗口
是否有另一种方式来访问MainWindow
的public
变量比:如何访问主窗口中的变量来自第二个窗口
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