2016-04-07 3 views
0

в MyUserControl.xaml.csДоступ к MainPage из моего 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(); 

      } 

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

           /> 

как я могу взаимодействовать с моим MainPage из моего UserControl как этот

private void StartVideos() 
{ 

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

У меня возникла идея использовать статическую переменную в App.Xaml.cs может Я предлагаю образец или другую идею?

ответ

0

У меня была проблема вроде этого, но мне нужно было изменить текст TextBlock из пользовательского элемента управления.

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

Я сделал что-то вроде этого, и он работает.

В 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; 
} 

В MainPage:

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

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

Я уверен, что он будет работать для вас тоже.

Смежные вопросы