WPF

2009-10-07 22 views
11

'daki bir düğmenin durumlarını etkinleştirmek ve devre dışı bırakmak için farklı görüntüler Aşağıdaki düğmenin görüntüsünü duruma bağlı olarak değiştirmek istiyorum, yani durumu etkinleştirmek ve devre dışı bırakmak için farklı bir resim kullanmak istiyorum.WPF

<Button CommandParameter="Open" > 
    <StackPanel Orientation="Horizontal" > 
     <Image Source="../icons/big/open.png" Width="20" Height="20"></Image> 
    </StackPanel> 
</Button> 

Teşekkür ederiz.

cevap

0

Style.Triggers onun içerik özelliğinde bir görüntü nesnesi görüntülemek yapar düğmesi için bir stil oluşturmak, Temelde wpf-style-trigger

0

yayınına bakın kullanmayı deneyin, sonra devlet etkin düğmeleri kontrol eden bir tetikleyici var ve ne zaman DOĞRU bir görüntü olmalı ve diğer zamanlarda diğer görüntü olsun.

10

Böyle tetikleyiciler oluşan bir stil kullanabilirsiniz:

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <StackPanel Orientation="Horizontal" > 
        <Image Name="PART_Image" Source="path to normal image" /> 
       </StackPanel> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Source" Value="path to mouse over image" TargetName="PART_Image"/> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="True"> 
         <Setter Property="Source" Value="path to pressed image" TargetName="PART_Image"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Source" Value="path to disabled image" TargetName="PART_Image"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Görüntülerin anında oluşturulması için bir çeşit grilaştırma filtresi (ve diğerleri) kullanmanın bir yolu yok mu? Farklı devletlerin esas olarak kodlanmış resimlerine sahip olmak zorunda mıyız? –

+2

Evet, yukarıda açıklananla aynı mantığı kullanabilir ve görüntünün Opaklık özelliğini değiştirebilirsiniz. Ayrıca, şablona bir Sınır ekleyerek ve farenin resmin üzerine geldiğinde göster/gizle veya arka plan rengini değiştir gibi şeyler de yapabilirsiniz ... –

+0

@MalRoss - Nasıl kullanabileceğinizi gösteren bu kod makalesine göz atın. devre dışı bırakılmış bir görüntü oluşturmak için değer dönüştürücü. Ben seninleyim, WinForms'un bedavaya yaptığı şeyleri yapmak için kod yazması çok sinir bozucu olsa da, en azından görüntüleri önceden yapmak zorunda değilsiniz. http://www.codeproject.com/KB/WPF/GrayscaleButton.aspx – kbrimington

8

Ben düğmesi devre dışı bırakılır ve o inşaat büyük zaman yarım donukluk var düğmeleri içindeki görüntüleri yapmak için aşağıdaki kodu kullanılmış!

<Style TargetType="Button"> 
    <Style.Resources> 
     <Style TargetType="Image"> 
      <Style.Triggers> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Opacity" Value="0.5" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Style.Resources> 
</Style>