2013-07-23 10 views
1

Приложение, которое я пытаюсь создать в WPF/C#, имеет довольно много кнопок в макете с панелью типа «экран телевизора» (фактически это эмулятор FMS для коммерческих самолетов). Многие кнопки меняют макет, на котором много TEXTBOX на экране телевизора. Мой вопрос: есть ли какое-либо положение для инкапсуляции макетов в разные классы/файлы и загрузка их в «телевизионный экран» при выборе различных кнопок? Другими словами, пользователь нажимает кнопку «План полета», а макет окна 355х355 (экран) выше загружает макет/файл/класс XAML «flight_plan». Каждый макет имеет разные размеры TEXTBOX &, и существует более 30 разных «страниц», что сделает их желательными.Несколько макетов XAML в WPF

Я очень новичок в WPF и C#, но написал приложения для запуска на C++ полностью обратно в Turbo C & OWL. Я также могу попытаться сделать что-то, что невозможно из-за работы в последнее время в Android/Java и запутанных возможностей.

Заранее спасибо.

Редактировать Благодаря @ adityaswami89 и всех остальных, кто получил меня на правильном пути, я нашел решение. Я добавил страницы через новую страницу WPF в VS2012. Затем изменил «экран» на навигационную рамку, и оттуда это было действительно просто. Ниже представлен простой проект, который я создал для его тестирования.

public partial class MainWindow : Window 
    { 
     NavRad navrad = new NavRad(); 
     FPlan fplan = new FPlan(); 

     public MainWindow() {..} 

     private void Frame_Navigated_1(object sender, NavigationEventArgs e) {..} 

     private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 
      Screen_Frame.Navigate(fplan); 
     } 

     private void Button_Click_2(object sender, RoutedEventArgs e) 
     { 
      Screen_Frame.Navigate(navrad); 
     } 
+1

Просто используйте некоторые 'UserControls'. В противном случае restyle 'TabControl' будет иметь кнопки в заголовках. Есть тысячи способов достичь этого. Что вы пробовали? –

+0

Я еще ничего не пробовал, но обязательно посмотрю на UserControls. Я только начал заниматься исследованиями сегодня и не знал, с чего начать. У меня уже около 1000 строк написано и фигурирует, что должен быть более простой и логичный способ сделать это. –

+0

У вас есть 1000 строк, написанных для чего? WPF не требует много кода для чего-либо, он очень сильно отличается от того, к чему вы могли бы привыкнуть на C++ или еще. Опубликуйте снимок экрана о том, что вам нужно, и я могу сказать вам правильный способ сделать это в WPF. –

ответ

2

Вы также можете использовать концепцию фреймов для предполагаемой функциональности, если это может быть вариант, который вы ищете.

Вы можете ссылаться на приведенную ниже ссылку.

http://msdn.microsoft.com/en-us/library/ms750478.aspx#Frame_in_Standalone_Applications

+0

Это решение фактически сделало это для mew. Я добавил свое сообщение выше, чтобы включить код. Огромное спасибо!!! –

+1

Рад, что это сработало :) Продолжайте кодирование. Я также размещаю блог на adityaswami89.wordpress.com. – adityaswami89

1

Вы можете абстрагироваться от разных макетов пользовательского интерфейса в разных пользовательских элементах управления и загружать их согласно логике пользовательского интерфейса. Один из способов сделать это - использовать среду MVVM, например, Caliburn Micro делает это довольно простой задачей:

ActivateItem (UILayoutViewModel);

И этот вызов можно вызвать любым способом.

См. Больше экранов и состава Caliburn на official source.

+1

Примеры на связанном вами сайте очень похожи на то, что мне нужно. –

+0

Я рад, что смогу помочь. –

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