0

我正在尝试使用全局资源字典,但是当我尝试使用它包含的样式时出现错误。在我的 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 [Line: 30 Position: 42] 的资源”。第 42 行是包含列表框定义的行Style="{StaticResource CategoryListTemplate}"

LitBox.xaml 的构建操作设置为 Resource,据我所知,这应该可以工作,不是吗?

4

2 回答 2

0

我在 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);
            }
于 2011-04-22T17:06:14.557 回答
0

请参阅相关问题的答案

看来手机不支持以这种方式合并字典。

于 2011-04-11T09:45:44.120 回答