Мне нужно вызвать метод в моем классе MainPage.xaml.cs, когда событие обрабатывается в дочернем элементе управления. Вызов this.Parent
не работает, потому что она возвращает только первый DependencyObject в дереве, и я не могу получить PhoneApplicationPage
от этогоКак получить родительский контейнер, например. PhoneApplicationPage, в Windows Phone?
У меня есть следующий макет в моем PhoneApplicationPage
:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="AUTO"/>
<RowDefinition Height="*"/>
<RowDefinition Height="AUTO"/>
</Grid.RowDefinitions>
<Grid Height="85" VerticalAlignment="Top" Grid.Row="0"></Grid>
<Grid Grid.Row="1" Name="gridContent" />
<ug:UniformGrid Rows="1" Columns="5" Height="85" VerticalAlignment="Bottom" Grid.Row="2">
<tabs:TabItem Name="tabOverview" TabItemText="OVERVIEW" TabItemImage="overview_64.png" />
<tabs:TabItem Name="tabLogs" TabItemText="LOGS" TabItemImage="log_64.png"/>
</ug:UniformGrid>
</Grid>
с следующий код:
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
gridContent.Children.Add(new OverviewUserControl());
}
public void UpdateContent(UserControl control)
{
// I need to call this method from the TabItem Tap event
gridContent.Children.Clear();
gridContent.Children.Add(control);
}
}
Когда происходит событие крана, мне нужно заменить содержимое gridContent
с тем, что соответствует крану пользователя. это, как я обрабатывать событие водопроводную:
private void TabItem_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
// var parent = this.Parent; //<-- this doesn't get the PhoneApplicationPage
var ti = sender as TabItem;
if (ti != null)
{
string tab = "";
switch (ti.Name)
{
case "tabOverview":
// I need a reference to MainPage here to call
// MainPage.UpdateContent(new LogsUserControl())
break;
case "tabLogs":
// I need a reference to MainPage here to call
// MainPage.UpdateContent(new OverviewUserControl())
break;
}
}
}
Вопрос
Таким образом, вопрос, как я могу вызвать метод в MainPage
от TabItem_Tap
?