2013-01-15 11 views
11

Buttonの背景(たとえばSolidColorBrushなど)を有効にしない場合(IsEnabled == false)のみ変更する必要があります。
どうすればいいですか?変更ボタン背景が有効になっていない場合

ボタンStyleをXAMLを使用して変更する必要がありますか、またはこの作業をプログラムで行うことはできますか?有効になっていないときに背景のみを変更するには、正しいXAMLコードは何ですか。

私は、次のXAMLコードを試してみましたが、それは効果がありません:

<Button> 
<Button.Style> 
    <Style TargetType="Button"> 
     <Style.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Background" Value="Red"></Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Button.Style> 
</Button> 
+1

この記事をチェック:http://www.infosysblogs.com/microsoft/2010/07/wpf_-_disabled_look_for_button.html – kmatyaszek

+0

なぜこれは機能しませんか?誰も説明を持っていますか? – SAT

答えて

-1

あなたはスタイルのトリガーを使用することができます。

<Image.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsEnabled}" Value="False"> 
       <Setter Property="Image.Source" Value="pack://application:,,,/disabled.png" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Image.Style> 
+2

なぜImage.Styleですか?ボタンのSolidColorBrushを変更する必要があります。 – Nick

+0

Image.Sourceの代わりにButton.Backgroundを使用し、値に – chameleon86

+1

@ hameleon86という色(または特定のブラシ)を設定します。このコードは、私のものと非常に似ていて、機能しません。 – Nick

7

あなたは、テンプレートを編集することで、背景を変更することができます。 Buttonhereのデフォルトテンプレートがあります。

<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/> 

EDIT:あなたは、単にこのような何かを追加することができますIsEnabledためのトリガーで

、代わりにこれを試してみてくださいを。

<Window.Resources> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border x:Name="Overlay" CornerRadius="2"> 
         <ContentPresenter/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter TargetName="Overlay" Property="Background" Value="Red"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<StackPanel> 
    <Button Content="Button" IsEnabled="False"/> 
</StackPanel> 

お客様のニーズに合わせて変更してください。

+0

これはデフォルトのテンプレートではありません。どこで正しいテンプレートを見つけることができますか? – Nick

+0

お探しのバージョンは?そのバージョンの他のバージョンを変更することができます。 – Eirik

+0

私はデフォルトバージョンを探しています。ボタンが無効になっているときに背景だけを変更したい。あなたが私に提供したリンクには、私のボタンのデフォルトスタイルを変えるスタイルがあります。あなた自身を試してください.. – Nick

関連する問題