0

すべてのリソースをリソース テンプレート ファイルに追加し、それらを動的リソースとして組み込んでみました (Blend がこれを行う方法とまったく同じです)。プログラムは正常にコンパイルおよび実行されますが、スタイルはまったく適用されません。奇妙なことに、それらプレビューに適用されます。これは私が持っているコードです:

// MyUserControl.xaml
<UserControl x:Class="MyProject.MyUserControl"
         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="411" d:DesignWidth="645">
     <Grid>
        <Button Content="Click here" Style="{DynamicResource MyButtonStyle}" />                
     </Grid>
 </UserControl>

-

// MyStyleTemplates.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
        <Setter Property="Background">
            <Setter.Value>
                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                    <GradientStop Color="#FF263B5B" Offset="0"/>
                    <GradientStop Color="#FF65FD43" Offset="1"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

-

// App.xaml
<Application x:Class="MyProject.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/MyProject;component/MyStyleTemplates.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

私はまったく同じことをしようとしましたが、タグStyle内のコードをファイルに入れてみましたが、それは再びうまくいきました。そのため、スタイル自体に問題はありません。なぜこれが起こるのですか?<UserControl.Resources>MyUserControl.xaml

編集:

これが関係している可能性があるため、次のように、フォルダー構造が少し型にはまらない場合があります。

MyProjectFolder /
    MyProject.csproj
    MyStyleTemplates.xaml
    Main /
       App.xaml
    GUI /
       MyUserControl.xaml
       MyUserControl.xaml.cs

これは許されますか?

4

2 に答える 2

0

App.xaml で ResourceDictionary マージを以下のように変更します

<ResourceDictionary Source="pack://application:,,,/MyProject;component/MyStyleTemplates.xaml"/>
于 2013-11-14T16:21:39.570 に答える