1

ResourceDictionary'style1.xaml'でDataTemplateを定義しました。

<ResourceDictionary
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >

    <DataTemplate x:Key="BlogDataTemplate">
        <Grid Margin="0,0,6,20" Width="400" Height="210">
            <Grid VerticalAlignment="Bottom" Background="#A6000000">
                <TextBlock Text="{Binding title}" Style="{StaticResource PhoneTextExtraLargeStyle}" Foreground="White" Margin="6" FontSize="25" TextWrapping="Wrap"/>
            </Grid>
        </Grid>
    </DataTemplate>

</ResourceDictionary>

App.xaml.csにいる間、次のコードを使用してResourceDictionaryをマージします。

void LoadDictionary()
{
    var dictionaries = Resources.MergedDictionaries;
    string source = string.Empty;
    var themeStyles = new ResourceDictionary { };
    switch (Settings.fontStyle.Value)
    {
        case 0:
            source = String.Format("/app;component/Themes/style1.xaml");
            themeStyles.Source = new Uri(source, UriKind.Relative);
            dictionaries.Add(themeStyles);
            break;
        case 1:
            source = String.Format("/app;component/Themes/style2.xaml");
            themeStyles.Source = new Uri(source, UriKind.Relative);
            dictionaries.Add(themeStyles);
            break;
        default: break;
    }
}

デバッグを使用すると、style1.xamlがマージされたことを確認できます。次に、MainPage.xmalにリストボックスがあり、ItemTemplateを次のように定義します。

 <ListBox x:Name="listbox" ItemsSource="{Binding}" CacheMode="BitmapCache" ItemTemplate="{StaticResource BlogDataTemplate}"/>

しかし、アプリをデプロイすると、「不特定のエラー」が発生しました。

では、Windows PhoneのResourceDictionaryでDataTemplateにアクセスするにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

2

LoadDictionaryコードの代わりに、次のようにして、App.xamlでResourceDictionaryをXamlとマージしてみてください(App.xaml、Application.Resources)。

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Themes/style1.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
于 2012-12-17T15:27:47.813 に答える