MVVM Light ViewModelLocator + ResourceDictionaries

Я изначально разместил это сообщение на странице MVVM Light CodePlex, но еще не получил ответа, так что надеюсь, что кто-то здесь может мне помочь. Вот вопрос:

Недавно я начал играть с MVVM (тоже новичок в WPF - довольно сложно изучить все это), и все отлично работало с моим экземпляром ViewModelLocator и привязкой времени разработки для VS2010, пока я не начал использовать MetroToolkit, предоставленный на CodePlex. Перед использованием инструментария у меня было следующее:

<Application.Resources>
    <local:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
</Application.Resources>

Все мои представления были хорошими, и все выглядело действительно хорошо. Я был удивлен тем, насколько легко человек, не имеющий опыта MVVM (или MVC), может начать работу. Затем я столкнулся с проблемой MetroToolkit, требующей объединенных словарей ресурсов, и теперь, что бы я ни пытался, я не могу заставить VS снова найти мой ViewModelLocator внутри App.xaml. Вот новая разметка:

<Application.Resources>

        <ResourceDictionary>

            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Colors.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Animations.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Geometry.xaml"/>
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Generic.xaml"/>
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Buttons.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Scrollbar.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Scrollviewer.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/RadioButton.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/ProgressBar.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/ContextMenu.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Tooltip.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Checkbox.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Headings.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Textbox.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Combobox.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Slider.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/Expander.xaml" />
                <ResourceDictionary Source="/MetroToolkit;component/Themes/Dark/TabControl.xaml" />
            </ResourceDictionary.MergedDictionaries>

            <local:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />

        </ResourceDictionary>
    </Application.Resources>    

Я попытался дать словарю ресурсов ключ, добавив строку за пределами области (вверху и внизу - вызывает неприятные и очень бесполезные ошибки) и могу ' Мне нужно найти мой локатор ВМ. Он работает немедленно, когда я удаляю блок из App.xaml, но, исходя из моих очень ограниченных знаний о WPF, они мне нужны, если я хочу, чтобы стили были доступны для всех представлений в моем приложении.

Есть мысли? Это сводит меня с ума уже несколько часов.

7
задан RubyHaus 27 May 2011 в 18:14
поделиться