2015-06-22 4 views
0

Итак, я делаю свое первое WPF MVVM-приложение. Просто изучая правильный принцип MVVM, но есть некоторые вещи, которые я не понимаю ...WPF & MVVM, правильный способ сделать это

У меня уже есть несколько пользовательских элементов управления. Первый вопрос - это то, что лучше использовать, UserControl или DataTemplates для изменения содержимого MainWindow?

И как сделать «привязку» в «MainWindow.xaml» для изменения UserControl/DataTemplates при нажатии кнопки? Например, когда нажата кнопка «Далее», содержимое основного окна исчезает, а содержимое пользовательского элемента управления появляется на экране «MainWindow.xaml». Возможно, с привязкой "", чтобы отключить его и включить?

Я нашел несколько примеров, которые работают на DataTemplate A Simple MVVM Example. Это помогло мне реализовать некоторые вещи, но я вижу некоторые дискуссии по «UserControl» и «DataTemplate» и как это сделать? Так что теперь я путать :)

+0

Какой пользовательский интерфейс вы хотите создать? есть ли хорошо известное приложение с аналогичным интерфейсом? – Liero

+0

Посмотрите приложение по этой ссылке: https://www.youtube.com/watch?v=Bk7mlEQI2rk Мне не нужно такое причудливое приложение, но принцип очень приятный - на вершине находится «докбар», который ведет пользователя приложение. Это не очень хороший пример, но у меня нет другой идеи, потому что я новичок в этом. И этот пример, вероятно, добавил добавление расширения :) – Pukaai

+1

Google дает мне http://stackoverflow.com/questions/1405739/mvvm-tutorial-from-start-to-finish –

ответ

1

Я недавно сделал приложение WPF с шаблоном MVVM, и я сделал следующее:

  • У меня есть одно «окно», в MainWindow, и в этом окне все Загружаются UserControls.

  • У каждого UserControl есть другая модель Viewmodel, для примеров «GeneralSettingsUserControl» имеет GeneralSettingsViewModel для проверки и привязки данных.

  • Каждый UserControl имеет свой собственный CodeBehind, где данные, связанный с его ViewModel

  • Следующий код, который я нашел в интернете (я не знаю URL в малейшей), но для меня это сделал трюк, чтобы изменить de ContentControl в главном окне.

Switcher.cs:

public static mainWindow mainWindow; 
public static void switchPage(UserControl p_objNewPage) 
{ 
    mainWindow.navigate(p_objNewPage); 
} 

MainWindow.xaml.cs

public void navigate(UserControl nextPage) 
{ 
    PageContent.Children.Clear(); 
    PageContent.Children.Add(nextPage); 
    PageContent.LastChildFill = true; 
} 

PageContent это имя Энергосистемы, где находится основное содержание. В каждом UserControl вы можете вызвать Switcher.switchPage (новый UserControl), чтобы изменить содержимое окна. Поэтому, когда вы нажимаете кнопку, вы можете вызвать этот метод.

Надеюсь, что это поможет и удачи.

+0

Спасибо! Мне нравится делать такой же трюк своим приложением («... но для меня это сделало трюк, чтобы изменить ContentControl в главном окне»). Ваш «ContentControl» был datatemplates или usercontrols windows? – Pukaai

+0

Я нашел URL-адрес, где нашел этот фрагмент кода: [link] (https://azerdark.wordpress.com/2010/04/23/multi-page-application-in-wpf/) –

+0

Usercontrols. Datatemplates используются для создания макета одной страницы, но я не уверен, что есть возможность добавить код за –

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