Windows Phone 7: глобальный ресурс не найден - PullRequest
0 голосов
/ 09 апреля 2011

Я пытаюсь использовать глобальный словарь ресурсов, но получаю сообщение об ошибке, когда пытаюсь использовать стиль, который он содержит. В моем app.xaml у меня есть:

 <Application.Resources>
        <ViewModel:ViewModelLocator x:Key="Locator"
                             d:IsDataSource="True" />
        <ResourceDictionary x:Key="dict1">
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/ListBox.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

В /Themes/ListBox.xaml, у меня есть это:

<Style x:Key="CategoryListTemplate" TargetType="ListBox">
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="SelectionMode" Value="Extended" />
        <Setter Property="BorderThickness" Value="0" />
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="ListBoxItem">
                    <Setter Property="Margin" Value="2" />
                    <Setter Property="Template">
            ....

Я пытаюсь установить стиль с помощью:

<ListBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" x:Name="lstCategories" SelectionMode="Extended" Style="{StaticResource CategoryListTemplate}" ...

Все же я получаю сообщение об ошибке при загрузке Viw - «XamlParseException - не удается найти ресурс с именем / ключом CategoryListTemplate [строка: 30 позиция: 42]». Строка 42 - это строка, содержащая определение списка со значением Style="{StaticResource CategoryListTemplate}".

Действие сборки для LitBox.xaml установлено в Resource, насколько я могу судить, это должно работать, не так ли?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Я решил это, используя вместо этого в App.xaml.cs следующее:

var dictionaries = Resources.MergedDictionaries;
            dictionaries.Clear();
            var dicts = new[]{
                "/ChickenPing.Mobile;component/Themes/ThemeResources.xaml",
                "/ChickenPing.Mobile;component/Themes/generic.xaml",
                "/ChickenPing.Mobile;component/Themes/ListBox.xaml",
                "/ChickenPing.Mobile;component/Themes/Rating.xaml",
                "/ChickenPing.Mobile;component/Themes/CheckBox.xaml",
        };
            foreach (var dict in dicts) {
                var themeStyles = new ResourceDictionary {Source = new Uri(dict, UriKind.Relative)};
                dictionaries.Add(themeStyles);
            }
0 голосов
/ 11 апреля 2011

См. этот ответ на связанный вопрос .

Кажется, что телефон не поддерживает объединение словарей таким образом.

...