2012-03-22 3 views
1

私は自分のアプリケーションの赤いボタンの束を持っているので、代わりにそのためにどこでもスタイルを定義するので、私は私のApp.xamlアプリケーション

<Application.Resources> 
    <Style x:Key="RedButton" TargetType="{x:Type Button}"> 
     <Setter Property="Background" Value="#FF830722" /> 
     <Setter Property="Foreground" Value="White" /> 
     <Setter Property="FontWeight" Value="Bold" /> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="Red" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Application.Resources> 

でこれを置きますデータバインディングを介してアプリケーションの特定の赤いボタン。デザインビューで正しく表示されているようです。

 <Button Style="{StaticResource RedButton}" Content="Search" Height="23" HorizontalAlignment="Left" Margin="449,13,0,0" Name="searchButton" VerticalAlignment="Top" Width="75" Click="searchButton_Click" /> 
     <Button Content="Add Item(s)" Margin="0,0,12,12" Name="addProductButton" Height="23" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="108" Click="addProductButton_Click"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}" BasedOn="{StaticResource RedButton}"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=searchDataGrid, Path=SelectedIndex}" Value="-1"> 
          <Setter Property="IsEnabled" Value="False" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 

私はアプリケーションを実行すると、私はこのエラーメッセージを取得:

がSystem.Windows.StaticResourceExtension 'に値を指定しては '' 例外をスローしました。'行番号「25」および行位置「140」。

StaticResourceを見つけるのに問題があると思います。 xmlnsを追加する必要がありますか?

編集: これは3つの主要プロジェクトを持つプリズムアプリケーションです。

  • シェル は - OrderModuleへの参照とインフラストラクチャを持っている
  • OrderModule は - インフラへの参照を持っている
  • インフラ

私は」ボタンを持っているユーザーコントロールスタイルを使用しようとすると、OrderModuleプロジェクトにあります。 私が使用していない最初のボタンの上に

このエラーインフラプロジェクトにリソースディクショナリを作成し、App.xaml(暗闇の中でショットの一種)とそれを統合しようとするために出て行きますよに基づく。 InnerExceptionは

「RedButton」という名前のリソースが見つかりません。リソース名は、大文字と小文字が区別されます。

+0

あなたのコードは自分の環境で動作しています。 FallbackValueをBindingに提供し、変更があった場合は報告できますか? – Markus

+0

あなたの精度のおかげで、私は私の答えを削除しました。それはもう使用していないので、私はこれが間違いなく正しい方向に進んでいると思います。WPFは明らかに特定の時間にスタイルを読み込む問題があります。私はそれを見ているように、問題の – David

答えて

1

WPFは、スタイルやテンプレートを検索するために使用し、それがプロジェクトのルートにテーマフォルダの下Generic.xamlのリソースディクショナリで別の一般的な場所があります。 私はそのフォルダをOrderModuleまたはInfrastructureに作成し、そこにスタイルを定義します。

+0

ええ、私は(プロジェクトをクラスライブラリからユーザコントロールライブラリに変更しなければならなかった)私のプロジェクトにResourceDictionaryを追加してしまいました...そのresourcedictionaryをapp.xamlにマージして動作させました。ありがとう –

関連する問題