2016-04-07 6 views
0

in MyUserControl.xaml.csZugriff auf das Mainpage von meinem Usercontrol

private void StartVideos() 
     { 

        foreach (Uri uri in _videos) 
         _playlist.Enqueue(uri); 

        fv.Visibility = Visibility.Collapsed; 

        fvWelcome.Visibility = Visibility.Collapsed; 



        mediaPlayer.Visibility = Visibility.Visible; 

        mediaPlayer.Source = _playlist.Dequeue(); 

        mediaPlayer.Play(); 

      } 

in MainPage.xaml

<RelativePanel x:Name="WelcomeRelativePanel" Background="#FF1F4E79" > 
      <TextBox x:Name="WelcomeText" 
           RelativePanel.AlignLeftWithPanel="True" 
           Margin="145,0,0,0" 
           Foreground="White" 
           FontFamily="Segoe UI" 
           IsReadOnly="True" 
           BorderBrush="#FF1F4E79" 
           BorderThickness="0" 
           HorizontalAlignment="Center" FontSize="84" 
           TextWrapping="Wrap" AcceptsReturn="True" 
           Background="#FF1F4E79" 

           /> 

wie kann ich mit meinem Mainpage aus meinem Usercontrol interagieren wie diese

private void StartVideos() 
{ 

    ..... 
    WelcomeRelativePanel.Visibility = Visibility.Collapsed; 
} 

Ich hatte eine Idee der Verwendung einer statischen Variable in App.Xaml.cs kann Hast du eine Probe oder eine andere Idee?

Antwort

0

Ich hatte ein Problem wie dieses, aber ich musste TextBlock Text von Benutzerkontrolle ändern.

<Page 
    x:Class="MyProject.MainPage"> 
    <Grid> 
    <TextBlock x:Name="myTextBlock" Text="" /> 
    <MyUserControl x:Name = "userControl" /> 
    </Grid> 
</Page> 

Ich habe so etwas getan, und es funktioniert.

In MyUserControl

private string myString; 
public delegate void MyEventHandler(string a); 
public event MyEventHandler MyPropertyChanged; 

public MyUserControl() 
{ 
    this.MyPropertyChanged+= new MyEventHandler(HandlePropertyChanging); 
} 

private void HandleCreditsChanging(string a) 
{ 
    a = myString; 
} 

In Mainpage:

public MainPage() 
{ 
    myUserControl.MyPropertyChanged += MyUserControl_MyPropertyChanged; 
} 

private void MyUserControl_MyPropertyChanged(string a) 
{ 
    myTextBlock.Text = a; 
} 

Ich bin sicher, dass es auch für Sie arbeiten.