【问题标题】:c# WPF Mainwindow button is not recognized in UserControl code?c#WPF主窗口按钮在UserControl代码中无法识别?
【发布时间】:2022-01-04 09:20:20
【问题描述】:

在主窗口的 xaml 中创建了一个名为“btnDel”的按钮,默认情况下为“Visibility = false”。 在我的 UserControlRDV.xaml.cs 代码中,我想使用“MainWindow.btnDel.Visibility = true”使该按钮可见。 此处出现错误 CS0120“非静态字段、方法或属性 'MainWindow.btnDel' 需要对象引用?

请帮忙!!

谢谢

【问题讨论】:

  • "在我的 UserControlRDV.xaml.cs 代码中,我想让该按钮可见" - 希望您不会真的这样做。它会使您的控件依赖于使用它的 MainWindow,这是一个明显的设计错误。而是将 Button 的 Visibility 绑定到控件的属性。
  • 嘿,您似乎对这个话题不熟悉。让用户控件以您描述的方式直接访问主窗口没有任何意义。用户控件和主窗口不共享相同的范围,因此它们不能像在同一个类中一样相互访问
  • 这里典型的 MVVM 方法是将 Button 的 Command 属性绑定到由 MainWindow 和 UserControl 共享的视图模型的 ICommand 属性。
  • 好的,你有这个例子吗?谢谢
  • MainWindow.btnDel.Visibility = Visibility.Visible visibility 属性不是布尔值。

标签: c# wpf button


【解决方案1】:

您可以使用Window.GetWindow 方法获取对UserControl 的父窗口的引用:

MainWindow mainWindow = Window.GetWindow(this) as MainWindow;
if (mainWindow != null)
    mainWindow.btnDel.Visibility = Visibility.Visible;

【讨论】:

  • 感谢 mm8 已正确解决
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
相关资源
最近更新 更多