1

更新:MainWindow、UC1、およびUC2があります。メインウィンドウには、フレームにUC1を表示するよりもframe1とUCbuttonが含まれています。

メインウィンドウ:

<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" />

私はすでに2ページに移動するのに助けを得ましたが、TrycastまたはDirectcastを学ぶのに苦労しています。:(あなたが私たちを助けることができることを願っています。ありがとう...

4

2 に答える 2

0

これを試して..

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

于 2013-03-04T07:28:55.680 に答える
0

イベントを使用します。

子ウィンドウ (Page1) コードで、次のようなイベントを作成します。

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

page1 のボタン クリックで、次のコードを使用します。

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
于 2013-03-04T09:50:44.883 に答える