Как запустить методы на страницах в Silverlight?
Я должен быть в состоянии установить видимость границы, чтобы быть видимой в течение 10 секунд. Граница находится в MainPage.xaml, который является родительским для Content.xaml. Хитрость заключается в том, что мне нужно изменить видимость границы, щелкнув элемент ContextMenu, который доступен из Content.xaml, который загружается как UserControl в MainPage.xaml. Это также должно быть условным основанием на значении ячейки в сетке данных. Я установил метод в Content.xaml, который должен условно изменить видимость границы в MainPage.xaml. Поскольку граница выходит за рамки, мне нужно найти способ, чтобы подключиться к ней.
Код для установки видимости на основе содержимого в значении ячейки в сетке данных:
private void Delete(object sender, RoutedEventArgs e)
{
Packages_DataViewModel currentItem = MasterTile.SelectedItem as Packages_DataViewModel;
if (currentItem.Status != "has content")
{
this.MainPageBorder.Visibility = Visibility.Visible;
}
else
{
mv.DeletePackagesItem((Packages_DataViewModel)(MasterTile.SelectedItem));
}
}
Мне также нужно запустить метод, который я использую в Content.xaml для изменения содержимого сетки данных с помощью кнопки в MainPage.xaml. Любые идеи высоко ценятся!
Код для обновления значения ячейки:
private void Status(object sender, RoutedEventArgs e)
{
Packages_DataViewModel currentItem = MasterTile.SelectedItem as Packages_DataViewModel;
currentItem.Status = "has content";
this.MainPageBorder.Visibility = Visibility.Collapsed;
}
2 ответа
Чтобы ответить на ваш комментарий, RootVisual является вашим MainPage.xaml.
Чтобы получить доступ к методам в вашем Content.xaml, вы должны установить эти методы для общего доступа. Затем из MainPage.xaml вы можете вызвать его таким образом (приведя содержимое типа ucMainPage_MainContent к типу Page1).
((Page1)this.ucMainPage_MainContent.Content).TestMethod1();
(TestMethod1 - это новый открытый метод, который я добавил в Page1.xaml.)
MainPage.xaml всегда должен быть вашим пользователем root. Вы можете легко получить доступ к объекту через
следующий код:
Application.Current.RootVisual
и это доступно везде в вашем приложении Silverlight.