Я пытаюсь создать приложение Silverlight, где я использую 5 XAMLS. Первый, «Page.xaml» содержит меню с 4 кнопками и Canvas для получения каждого контента XAML. Каждый контент XAML имеет 2 раскадровки: «entrada» (анимация «Enter section») и «saida» (анимация окончания раздела).Признание раскадровки из другого XAMLS
У меня возникает следующая проблема: Меню находится в Page.xaml. Я хочу, чтобы каждая кнопка нажала кнопку «saya», и, когда раскадровка заканчивает игру, она загружает новое содержимое другого XAML (выбирается в меню). Когда я пытаюсь это сделать, Visual Studio продолжает говорить мне, что «ContentCanvas» не существует в текущем контексте »для каждого контента XAML.
Вот мой Page.xaml.cs:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightPagingSystemProject
{
public partial class Page : UserControl
{
String secao = "home";
Section1 s1 = new Section1();
Section2 s2 = new Section2();
Section3 s3 = new Section3();
public Page()
{
// Required to initialize variables
InitializeComponent();
Link1.MouseLeftButtonDown += new MouseButtonEventHandler(Link1_MouseLeftButtonDown);
Link2.MouseLeftButtonDown += new MouseButtonEventHandler(Link2_MouseLeftButtonDown);
Link3.MouseLeftButtonDown += new MouseButtonEventHandler(Link3_MouseLeftButtonDown);
}
private void Link1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (secao == "home")
{
ContentCanvas.Children.Remove(s1);
ContentCanvas.Children.Remove(s2);
ContentCanvas.Children.Remove(s3);
ContentCanvas.Children.Add(s1);
}
else
{
ContentCanvas.saida.Begin();
}
}
private void Link2_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (secao == "home")
{
ContentCanvas.Children.Remove(s1);
ContentCanvas.Children.Remove(s2);
ContentCanvas.Children.Remove(s3);
ContentCanvas.Children.Add(s2);
}
else
{
ContentCanvas.saida.Begin();
}
}
private void Link3_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (secao == "home")
{
ContentCanvas.Children.Remove(s1);
ContentCanvas.Children.Remove(s2);
ContentCanvas.Children.Remove(s3);
ContentCanvas.Children.Add(s3);
}
else
{
ContentCanvas.saida.Begin();
}
}
}
}
А вот мой секции XAML. Все они одинаковы.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightPagingSystemProject
{
public partial class Section3 : UserControl
{
public Section3()
{
// Required to initialize variables
InitializeComponent();
Section3LayoutRoot.Loaded += new RoutedEventHandler(Section1LayoutRoot_Loaded);
saida.Completed += new EventHandler(saida_Completed);
}
void saida_Completed(object sender, EventArgs e)
{
this.Parent.ContentCanvas.Children.Remove(s1);
this.Parent.ContentCanvas.Children.Remove(s2);
this.Parent.ContentCanvas.Children.Remove(s3);
this.Parent.ContentCanvas.Children.Add(secao);
}
void Section1LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
entrada.Begin();
}
}
}
Спасибо за помощь!
Это частично решило проблему. Теперь проблема заключается в том, что он не может найти «s1», «s2» ... и так далее, так как они находятся на главном XAML. Но отличная помощь! –
Да, вам обязательно понадобится ссылка на эти объекты, чтобы удалить их таким образом. Если у вас нет этой ссылки (это не очень приятное решение, но она будет работать), вы можете просто установить свойство Name s1, s2, s3, когда они будут созданы, а затем выполнить итерацию по коллекции Children, чтобы проверить имена каждого из них на получите нужные вам ссылки. Или если эти 3 секции являются единственными детьми ContentCanvas, просто используйте ((Canvas) this.Parent) .Children.Remove (((Canvas) this.Parent) .Children [0]) ((Canvas) this.Parent). Children.Remove (((Canvas) this.Parent). Дети [1]) и т. Д. –
Это решит проблему удаления детей. Это было хорошо! Но мне все еще нужно контролировать раскадровку ребенка с помощью основного XAML. Как я могу это достичь? Спасибо за большую помощь! –