Я согласен с Abe. Все, что вам нужно сделать, это добавить ресурс словарь файл проекта (например, Resources.xaml
поставил
<DataTemplate DataType="{x:Type vm:AllCustomersViewModel}">
<vw:AllCustomersView />
</DataTemplate>
внутри него и затем в вашем App.xaml поместить следующее:.
<Application.Resources>
<ResourceDictionary Source="Resources.xaml"/>
</Application.Resources>
Итак, всякий раз, когда WPF пытается выяснить, как визуализировать класс (который он в настоящее время не знает, как визуализировать), он просматривает ресурсы управления, если там нет шаблона, он проверяет ресурсы контейнера элементов управления. там он продолжает расти, пока не будет контейнера. Затем он переходит к Appl ication.Resources. Если он найдет его, он будет использовать этот шаблон. Если нет, то он просто вызывает ToString(). Поместите все свои глобальные материалы в Application.Resources, чтобы вы не повторяли себя по всему своему приложению, держите его сухим (не повторяйте сами).
На боковой ноте. Я нашел this post самым простым решением для привязки большого количества ViewModels к представлениям без явного написания каждого в ресурсном словаре. Он использует IValueConverter для динамического возврата желаемого вида.
Да, у меня есть UserControl, который я хочу внутри страницы. Я спрашиваю, как применить ViewModel где-то вроде App.xaml к UserControl внутри страницы? Благодаря! – Mike
В приложении MVVM вам понадобятся вспомогательные методы для соединения между представлением и моделью представления. Я использую библиотеку от Марка Смита по адресу: http://www.julmar.com/blog/mark/2009/08/04/MVVMHelpersV103.aspx. Он определяет службу, которая создает новое окно и правильно устанавливает контекст данных в модель представления. – Timores