2013-03-05 58 views
6

私は最近、VS 2012にアップグレードしました.net 4.5を使用する必要があったので、それはポイントのほかにあります。私はAppStyles.xamlと呼ばれる私のメインのプロジェクトでResourceDictionaryを持っている、とApp.Xamlに、私は次のようしているリソース "x"を解決できませんでした。

:私の問題は次のとおりです

が私の ResourceDictionary
<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="AppStyles.xaml"/> 
    <ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

スタイルがあり、私はそれから適用することができ私のプロジェクトのどのボタンにもこのスタイルを設定するには、Style={StaticResource MyButton}を設定します。

VS 2012にアップグレードした後、私はタイトルに多くのエラーが発生していることに気付きました。そして時にはデバッグから私を止めることもあります。

私はこれを行う必要がありますか、VS 2012に問題がありますか?

+0

以下のような

何かを意味していますか?しかし、あなたはコンパイルすることができ、正常に動作します。 –

+0

リソースが見つからないというエラーメッセージが表示されます。しかし、時には私は走ることができ、ボタンを正しく表示することさえできます!しかし、それ以外の時には、デバッグから停止します。 –

+0

AppStyles.xamlのコードがありますか? (私は、VSが設計時にそれをロードするのをやめました)もう一つの問題は、AppStyles.xamlを、コンパイル時には動作するが設計時には動作しないリソースとして含めることです。それは「ページ」でなければなりません。 – Wouter

答えて

5

また、この問題はVS2010でも発生します。場合によっては、「クリーンなソリューション」と「ソリューションの再構築」を行うと問題が解決します。それが動作しない場合、私は通常VS2010を再起動します。

私はまた、スタイルx:キーの名前を別のものに変更しましたが、問題はなくなりました。しかし、私は完璧にするために、この解決策を見つけるいけない、私のサンプルコードで回避策についてこの質問へ...

<Application.Resources> 
<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 

    <!-- Load Infrastructure's Resource Dictionaries --> 
    <ResourceDictionary Source="/MyProject.Modules.Infrastructure;component/ResourceDictionaries/ResourceLibrary.xaml" /> 

    </ResourceDictionary.MergedDictionaries> 

    <!-- Workaround for ResourceDictionary loading bug/optimization --> 
    <Style TargetType="{x:Type Rectangle}" /> 

</ResourceDictionary> 

参考:Trouble referencing a Resource Dictionary that contains a Merged Dictionary

+0

私は、クリーニング、再構築、再起動、さらにはコンピュータの再起動が必要です。このエラーはポップアップし続け、意味をなさない、完全に1秒間実行されていて、次はコ​​ンパイルできなくなった! –

+0

うん。これはとても奇妙です。スタイルキーの名前を変更しようとしましたか? – hijack

+0

はい、私は、問題が残っている!それはもはやコンパイルから私を止めることはありませんが、このスタイルを使用する私のカスタムコントロールのどれもデザインで示されることはできません! –

4

あなたはそこから共通またはインフラプロジェクトを作成することができます他のプロジェクトも参考になります。リソースリソースを追加します。次に、パックURIを作成します。 は、ウィンドウの場合、リソースディクショナリ内のあなたのユーザーコントロールまたはウィンドウのリソースにユーザーコントロールまたは使用Window.Resourcesで

<...Resources> 
<ResourceDictionary> 
    <!-- Resource Dictionaries --> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary 
      Source="pack://application:,,,/Common;component/Dictionaries/Styles.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 

を参照します。これは私のために働く。

10

WPFは、マージしようとしているリソースディクショナリを解決できません。結合された辞書を作成すると、WPFはURIの解決を試みる一連の規則に従います。あなたの場合、URIはあいまいなので、WPFは確実に解決できません。

App.xamlSource URIを絶対的なパックURIに変更します。たとえば、プロジェクト場合は(すなわち:「MyProjectとは、」短いアセンブリ名です)MyProjectと呼ばれ、その後、あなたがApp.xamlSourceを変更する必要があります。

これはAppStyles.xamlMyProjectのルート内にあるとみなされます。必要に応じて、署名付きアセンブリの権限、アセンブリバージョン、および公開鍵情報を指定できます。ただし、短いアセンブリ名(上記の例ではMyProject)で安全である必要があります。

WPFにおけるパッケージのURIの更なる詳細については、MSDNで、このページを参照してください:あなたのプロジェクトにリソースディクショナリを追加することができますhttp://msdn.microsoft.com/en-us/library/aa970069(v=vs.110).aspx

1

、リソース、次にように、コードでそのURIを追加しようとするために、そのビルドアクションを変更次の:

<ResourceDictionary> 
<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary 
     Source="/Styles.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

または単にプロパティ]タブを使用してvs2012プロセスにそれを聞かせて...

+0

ディクショナリのビルド・アクションを* Resource *に変更しても何も変更されません。 – superjos

3

を、あなたのappStyles.xamlフォルダへの相対パスを使用することが可能です。お役に立てれば。あなたが発見されていない何かについて、設計時に問題を取得

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="../Resources/Styles.xaml"></ResourceDictionary> 
     </ResourceDictionary.MergedDictionaries> 
<ResourceDictionary> 
関連する問題