Когда вы говорите "передать этот класс в другое окно".Если это окно уже открыто, вам нужно найти ссылку на него.Затем вы обнаружите, что его элементы управления являются частными, поэтому вы не можете просто установить содержимое фрейма.Плохо было бы использовать рамку вообще, но я расскажу об этом в последнюю очередь.Добавьте к вашему представлению публичный метод, который должен принять страницу в качестве параметра.Затем этот метод является частью вашего ViewContatoFisico и может вносить изменения в его элементы управления.
public void SetContent(Page p)
{
this.FrameContatoFisico.Content = p;
}
Затем вам нужно иметь ViewContatoFisico, чтобы что-либо делать.Вы можете либо создать новый файл и показать его:
Page_Contato_Fisica p = new Page_Contato_Fisica(true, c);
ViewContatoFisico v = new ViewContatoFisico();
v.SetContent(p);
v.Show();
В этом случае (если вы не будете осторожны), возможно, ваш пользователь получит множество открытых.Я видел приложения, в которых пользователь часто «теряет» окна, потому что все загружает другое окно.
Если у вас уже есть одно, которое вы показывали, или вы хотите избежать проблем с множеством окон, вы можете получить ссылку на любой экземпляр.это открыто вместоВы можете передать typeof (ViewContatoFisico) на:
private Window GetWindowInstance(Type winType)
{
Window win;
win = Application.Current.Windows
.OfType<Window>()
.SingleOrDefault(w => w.GetType() == winType);
if (win == null)
{
win = (Window)Activator.CreateInstance(winType);
}
return win;
}
Тогда, конечно.
v.SetContent(p);
v.Show();
Мой последний совет.Не используйте страницы и рамки.Вместо этого используйте UserControl и ContentControl.UserControls почти такие же, как Pages, но более гибкие.ContentControls намного легче, чем фреймы, и более гибок.У фрейма есть свой журнал, в котором содержится ссылка на каждый контент, который вы в него вставляете.
Я также рекомендую вам заглянуть в MVVM и сначала перейти в viewmodel.