【问题标题】:How to change the WPF window's lable text from another wpf window如何从另一个 wpf 窗口更改 WPF 窗口标签文本
【发布时间】:2013-02-11 20:43:25
【问题描述】:

我有一个 Page Call Page 1 并且在第一页上有 1 个控件 - 标签 - 按钮

单击按钮时,我将打开新的 Wpf 窗口,其中有一个按钮,单击该按钮时,我想更改第一个窗口标签文本。

LobbyStandardPopupView objLobbyStandardPopupView = new LobbyStandardPopupView();
objLobbyStandardPopupView.Show();

LobbyStandardView objLobbyStandardView = new LobbyStandardView();
objLobbyStandardView.Ring_Game.Text = "Hello";

我尝试创建对象并更改控件值,但没有影响。

【问题讨论】:

  • 它可能没有进行更改,但在 Windows 进程队列中。 Application.DoEvents() 以查看更改。这只是一个建议,因为我没有看到任何代码?
  • 简单调用 wpf 窗体。使用 opendialog()
  • 尝试设置你的 wpf 窗口的 Owner 属性,这样你就可以将你的调用页面引用到你的调用窗口中
  • michele 我该如何设置?我的代码是 LobbyStandardPopupView objLobbyStandardPopupView = new LobbyStandardPopupView(); objLobbyStandardPopupView.Show(); LobbyStandardView objLobbyStandardView = new LobbyStandardView(); objLobbyStandardView.Ring_Game.Text = "你好";

标签: c# wpf


【解决方案1】:

在您的通话窗口中:

ChildWindow w = new ChildWindow ();
w.Owner = this; //here your calling window
w.Show();

在您的子窗口上:

(this.Owner as YourMainWindow).YourProperty  = "Your Text";

Owner 属性是一个窗口,因此如果您想访问您的自定义属性,您必须强制转换为您的窗口类型。

在您的情况下,使用 Page,将此属性添加到您的 LobbyStandardPopupView

 public LobbyStandardView mycallingpage = null;
 public LobbyStandardPopupView(LobbyStandardView callingPage)
 {
     InitializeComponent();
     mycallingpage = callingPage;
 }

在你的按钮事件中:

mycallingpage.Ring_Game.Text = "Hello";

【讨论】:

  • 感谢您的重要回复,但我收到此错误错误 9 无法将类型“ClientApplication.View.LobbyStandardView”隐式转换为“System.Windows.Window”
  • 所有者属性是一个窗口。所以你必须将它设置为一个窗口。 LobbyStandardView 对象是一个 Page?最终在您的 Popup 对象中创建一个属性,您可以在其中存储对调用 Page 的引用,例如,您将其称为 OwnerPage。
  • 在我的父页面按钮上单击:- LobbyStandardPopupView objLobbyStandardPopupView = new LobbyStandardPopupView(); objLobbyStandardPopupView.Owner = Window.GetWindow(this); objLobbyStandardPopupView.Show();现在在我的子按钮上单击 ... ((LobbyStandardView)this.Owner as LobbyStandardView ).Ring_Game.Text = "Your Text";但是给我投射错误
  • 因为 Window.GetWindow(this) 将返回 Window 而不是 LobbyStandardView。我会更新我的答案,给我 5 分钟。
  • @ujjaval 我已经更新了我的答案。如果问题解决了,请考虑采纳答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多