1

マルチターゲットアプリケーション (.net 4.0)を作成しています。ResourceDictionay に問題があります。 シナリオ: WPF CustomControlLibrary の作成 - 「WpfLib」という名前、デフォルトの名前空間「test」 WpfLib で UserControl を作成 - 「uc」という名前

<UserControl x:Class="test.uc"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="res.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>   
    <Grid>
        <Button Style="{StaticResource bStyle}" Content="Button" Height="23"  Width="75" />
    </Grid>
</UserControl>

「res.xaml」のコード

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="bStyle" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Red" /> 
    </Style>
</ResourceDictionary>

今はすべてが素晴らしいです....ボタンは赤です

次に、新しい Project Silverlight アプリケーションを追加して、「SlApp」(Silverlight 5)(名前空間「test」) という名前を付けます。「WpfLib」から「uc」を link(「uc.xaml」「uc.xaml.cs」) として追加します。「SlApp」に新しい ResourceDictionary を作成し、次のように res.xaml という名前を付けます。

 <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <Style x:Key="bStyle" TargetType="Button">
            <Setter Property="Background" Value="Blue" />
        </Style>
    </ResourceDictionary>

x:Type は SilverLight でサポートされていないため、新しい ResourceDictionary には TargetType="Button" があります。背景は赤ではなく青に設定されています。

そして、ここから問題が始まります。
どうすれば機能しますか?コントロール uc はマージ時にエラーを表示します (Silverlight バージョンで)。ユーザー コントロールの Wpf と Silverlight バージョンで異なる ResourceDictionary が必要です。ClassLibrary は app.xaml をサポートしておらず、デフォルトのスタイルを使用できません。

4

0 に答える 0