Установка Window.Content для ViewModel - простой шаблон данных не работает - PullRequest
0 голосов
/ 24 мая 2011

Попытка разобраться с MVVM и получить простое окно для рендеринга его модели представления как представления с использованием шаблонов данных.

в приложении. Xaml:

<Application.Resources>
   <DataTemplate DataType="{x:Type vm:TestViewModel}">
      <vw:TestView />
   </DataTemplate>
</Application.Resources>

Просмотр определения:

<UserControl x:Class="MyNamespace.TestView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <TextBlock>TESTING</TextBlock>
    </Grid>
</UserControl>

В MainWindowViewModel:

private void onOpenTestView(object sender)
{
   Window w = new Window();
   w.Content = new TestViewModel();
   w.Show();
}

Запуск приложения приводит к появлению окна со строкой «MyNamespace.TestViewModel» вместо «TESTING», из-за чего мой шаблон данных не будет найден.

Я очень новичок во всем этом, поэтому я упускаю что-то очевидное? Я не думаю, что это проблема сопоставления строк, поскольку, если я намеренно ошибаюсь в представлении или модели в XAML, он не компилируется.

Должно ли мое новое окно иметь доступ к ресурсам моего приложения (и, следовательно, к моей таблице данных), хорошо?

Ура, Джереми

РЕДАКТИРОВАТЬ: ИСПРАВЛЕНО (не могу ответить в течение 8 часов)

Из-за ошибки MS, когда ресурсы не читаются, если не установлен хотя бы один стиль.

См. http://connect.microsoft.com/VisualStudio/feedback/details/553528/defaultstylekey-style-not-found-in-inner-mergeddictionaries

1 Ответ

0 голосов
/ 25 мая 2011

Из-за MS Bug, когда ресурсы не читаются, если не установлен хотя бы один стиль.

...