如何从另一个页面更改页面标签?

Posted

技术标签:

【中文标题】如何从另一个页面更改页面标签?【英文标题】:How can i change the label of page from another page? 【发布时间】:2013-03-04 07:11:08 【问题描述】:

更新:我有 MainWindow、UC1 和 UC2。主窗口包含 frame1 和 UCbutton,而不是将 UC1 显示到框架。

主窗口:

<Frame Height="200" HorizontalAlignment="Left" Margin="10,10,0,0" Name="Frame1" VerticalAlignment="Top" Width="400" />
<Button Content="Show Usercontrol" Height="23" HorizontalAlignment="Left" Margin="12,216,0,0" Name="SUbutton" VerticalAlignment="Top" Width="120" />

VB:

Private Sub SUbutton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles SUbutton.Click
    Dim uc1 As New UC1
    Frame1.Navigate(uc1)
End Sub

然后在打开 UC1 时,它由文本框和按钮组成

UC1:

<TextBlock Height="26" HorizontalAlignment="Left" Margin="12,45,0,0" Text="Page1" VerticalAlignment="Top" Width="40" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,77,0,0" Name="TextBox1" VerticalAlignment="Top" Width="120" />
<Button Content="Show Usercontrol2" Height="23" HorizontalAlignment="Left" Margin="12,106,0,0" Name="SU2button" VerticalAlignment="Top" Width="120" />

VB:

Private Sub SU2button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles SU2button.Click
    Dim mainWindow = GetParentWindow(Me)
    If mainWindow IsNot Nothing Then
        mainWindow.Frame1.Navigate(New UC2())
    End If
End Sub
Private Shared Function GetParentWindow(ByVal obj As DependencyObject) As MainWindow
    While obj IsNot Nothing
        Dim mainWindow = TryCast(obj, MainWindow)
        If mainWindow IsNot Nothing Then
            Return mainWindow
        End If
        obj = VisualTreeHelper.GetParent(obj)
    End While
    Return Nothing
End Function

我需要的是文本框中的文本将显示在 UC2 的标签中

UC2:

<TextBlock Height="31" HorizontalAlignment="Left" Margin="37,92,0,0" Name="hello" VerticalAlignment="Top" Width="220" />

我已经获得了导航到两个页面的帮助,但我很难学习 Trycast 或 Directcast。 :( 希望你们能帮助我。谢谢...

【问题讨论】:

【参考方案1】:

试试这个..

private void Button2_Click(object sender, RoutedEventArgs e) var wnd = Window.GetWindow(this); ((***.MainWindow)(wnd)).Label1.Content = "sadasd";

【讨论】:

Madhabendra,跟随一个问题。如果它是从一个页面到另一个页面怎么办?可能吗?不在主窗口中。嗯。谢谢! 你可以检查 this..var parent = VisualTreeHelper.GetParent(this); while (!(parent is Page)) parent = VisualTreeHelper.GetParent(parent); 感谢@Mahabendra 和 freschx 的帮助。我已经更新了我的问题,因为我错过了包含两页的内容。希望你 cud 仍然帮助我。谢谢!【参考方案2】:

使用事件。

在您的子窗口 (Page1) 代码中创建一个如下所示的事件。

Public Event Textchanged(sender as object, text as String)

在您的按钮上单击第 1 页,使用以下代码。

Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click
RaiseEvent Textchanged(Me, Textbox2.Text)
End Sub

在您创建 Page1 的主页面中,在 textchanged 事件上添加一个事件处理程序

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    Dim page1 As New Page1
    Addhandler page1.Textchanged, AddressOf Changetext
    Frame1.Navigate(page1)
End Sub

Private Sub ChangeText(sender as object, txt as String)
Label1.Content = txt
End Sub

【讨论】:

感谢您帮助 Mahabendra 和 @freschx。我已经更新了我的问题,因为我错过了包含两页的内容。希望你 cud 仍然帮助我。谢谢!

以上是关于如何从另一个页面更改页面标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签

Flutter 导航栏 - 从另一个页面更改选项卡

从另一个页面到达控制。 ASP.NET

如何从另一个视图控制器更改标签的文本并使用核心数据保存

从另一个类更改标签文本

如何从另一个 QML 访问和控制 ListModel 的内容