Silverlight: ресурс {0} не может быть разрешен (только во время разработки) - PullRequest
3 голосов
/ 15 февраля 2011

Я создал новый проект Silverlight 4 в VS2010.

Мой файл App.xaml выглядит следующим образом:

<Application 
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
            x:Class="ZCall.App">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources/Styles.xaml"/>
                <ResourceDictionary Source="Resources/ObjectResourceDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>                        
        </ResourceDictionary>
    </Application.Resources>
</Application>

пример представления xaml, которое генерирует ошибку:

<UserControl x:Class="ZCall.View.Control.CDetailsControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"  
    mc:Ignorable="d">

    <Grid x:Name="LayoutRoot" Background="White">
        <toolkit:BusyIndicator x:Name="biCDetails" BusyContent="Busy...">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition Height="10"/>
                    <RowDefinition/>
                    <RowDefinition Height="10"/>
                    <RowDefinition/>
                    <RowDefinition Height="10"/>
                    <RowDefinition/>
                </Grid.RowDefinitions>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="150"/>
                    <ColumnDefinition Width="10"/>
                    <ColumnDefinition Width="150"/>
                    <ColumnDefinition Width="10"/>
                    <ColumnDefinition Width="170"/>
                </Grid.ColumnDefinitions>

                <StackPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="5" Orientation="Horizontal">
                    <TextBlock Text="Name:" Style="{StaticResource PatientLabel}"/>
                    <TextBlock x:Name="txtName" Style="{StaticResource PatientData}"/>
                </StackPanel>


            </Grid>
        </toolkit:BusyIndicator>

    </Grid>
</UserControl>

Я получаю ошибки в ресурсах PatientLabel и PatientData.

Мой файл style.xaml находится в папке Resources в корне проекта.

Моя проблема в том, что во время разработки ни один из моих стилей, определенных в styles.xaml, не распознается, и я получаю сообщение об ошибке «Не удалось разрешить ресурс» для каждого используемого стиля, в то время как во время выполнения все стили разрешаются и отображается так, как должно быть.

Есть предложения?

Заранее спасибо, kruvi

Ответы [ 8 ]

5 голосов
/ 28 марта 2011

Установите действие сборки вашего App.xaml в ApplicationDefinition Ошибка часто возникает, когда вы копируете свой App.xaml из одного проекта в другой.

1 голос
/ 02 ноября 2011

У меня была та же самая ошибка с добавленным предупреждением, что я также использовал MVVM-Light.Оказывается, проблемы, с которыми я столкнулся, были вызваны неправильным расположением определения локатора модели Global View в моем файле app.xaml . app.xaml настроен.Обратите внимание на расположение локатора модели Global View в теге Application.Resources .Это неверно и вызвало у меня ошибки времени разработки в Visual Studios.

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Assets/Styles.xaml"/> 
            <ResourceDictionary Source="Skins/MainSkin.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    <!--Global View Model Locator-->
    <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
</Application.Resources>

Код ниже верен.Обратите внимание, что локатор модели глобального представления - это внутри тега ResourceDictionary .После того, как я переместил локатор модели Global View внутри тега resourceDictionary , мои ошибки времени проектирования исчезли.

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Assets/Styles.xaml"/>
            <ResourceDictionary Source="Skins/MainSkin.xaml" />                
        </ResourceDictionary.MergedDictionaries>
        <!--Global View Model Locator-->
        <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
    </ResourceDictionary>        
</Application.Resources>
1 голос
/ 15 февраля 2011

Я много раз пробовал некоторые решения, но теперь нашел рабочее.Сначала создайте файл xaml для хранения словарей объединенных ресурсов, например:

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/Assembly;component/Themes/PageStyles.xaml"/>
        <ResourceDictionary Source="/Assembly;component/Themes/CommonStyles.xaml"/>
        <ResourceDictionary Source="/Assembly;component/Themes/PageStyles.Dark.xaml"/>
        <ResourceDictionary Source="/Assembly;component/Themes/CommonStyles.Dark.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

Затем объявите его в своем App.xaml для использования файла ресурса:

<Application 
    x:Class="Assembly.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"       
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">

    <!--Application Resources-->
    <Application.Resources>
        <ResourceDictionary Source="Resources/MainResource.xaml" />
    </Application.Resources>

    <Application.ApplicationLifetimeObjects>
        <!--Required object that handles lifetime events for the application-->
        <shell:PhoneApplicationService 
            Launching="Application_Launching" Closing="Application_Closing" 
            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
    </Application.ApplicationLifetimeObjects>

</Application>

Теперь создайте свое приложениеи он будет работать в конструкторе и на устройстве или эмуляторе.

С наилучшими пожеланиями

Энрико

0 голосов
/ 10 января 2014

Из-за способа, которым дизайнер обрабатывает определения стилей, любые ошибки в файле стиля (например, app.xaml) приведут к тому, что дизайнер не сможет разрешить стили для любого стиля, определенного в этом файле.

У нас была эта проблема, которая была вызвана 2 незначительными ошибками в файле стиля.После того, как мы исправили эти ошибки и выполнили полную перестройку всего решения, все стили были правильно разрешены во всем решении.

Итак, просмотрите файл, содержащий ресурс, и исправьте все, что дизайнер считаетошибка (синяя волнистая линия внизу), а затем выполните полное перестроение.

0 голосов
/ 22 декабря 2013

Я нашел обходной путь для загрузки словарей ресурсов во время разработки без повторной загрузки одного и того же ресурса несколько раз во время выполнения. Я повторил вызов необходимого ResourceDictionary в каждом UserControl, который использует включенные ресурсы, и в .xaml.cs этого UserControl я добавил эту строку:

this.Resources=new ResourceDictionary();

, чтобы не допустить установки приложения во время выполнения с теми же ресурсами. Конечно, вам нужно вызвать ResourceDictionary где-то еще в основном проекте (например, App.xaml).

Надеюсь, это работает и для вашего случая.

0 голосов
/ 05 июня 2013

У меня возникла та же проблема, когда я удалил исходный файл App.xaml и добавил манипулированный файл App.xaml

Убедитесь, что свойства App.xaml выглядят так:

  • Действие сборки: Определение приложения
  • Копировать в выходной каталог: Не копировать
  • Пользовательский инструмент: MSBuild: MSBuild: MarkupCompilePass1
  • Пространство имен пользовательских инструментов: [Пробел]
  • Имя файла: App.xaml
0 голосов
/ 24 апреля 2013

Я столкнулся с той же проблемой в проекте библиотеки классов WPF. В этом проекте нет App.xaml, поэтому, очевидно, причина была в другом. И было обнаружено, что это поврежденный файл проекта VisualStudio: в элементе, представляющем файл ресурса, отсутствует тег <SubType>Designer</SubType>:

<EmbeddedResource Include="Properties\Resources.resx">
  <Generator>PublicResXFileCodeGenerator</Generator>
  <SubType>Designer</SubType>
  <LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>

Когда вернули <SubType>, дизайнер VS начал работать.

0 голосов
/ 10 июня 2011

Добавьте ссылку на сборку Microsoft.Practices.Unity.Silverlight в проектах вашего модуля.Он предоставляет магию времени разработки для поиска ресурсов, определенных в вашем проекте оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...