2009-10-07 7 views

Odpowiedz

0

Zasadniczo utworzyć styl dla przycisku, który sprawia, że ​​wyświetlany obraz obiektu w jego właściwości content, a następnie mieć wyzwalacz, który sprawdza stan przycisków włączone, a gdy jest PRAWDĄ, niech to będzie jeden obraz, a innym razem będzie drugi obraz.

10

Można użyć stylu z wyzwalaczy, takich jak ten:

<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

Czy nie można użyć jakiegoś filtra wyszarzającego (i innych) do generowania obrazów w locie? Czy musimy mieć zasadniczo zakodowane obrazy różnych stanów? –

+2

Tak, można użyć tej samej logiki, jak opisano powyżej i zmienić właściwość Opacity obrazu. Możesz również zrobić takie rzeczy, jak dodanie obramowania do szablonu i pokazać/ukryć go, gdy mysz znajdzie się nad obrazem, lub zmienić kolor tła ... –

+0

@MalRoss - Zobacz ten artykuł kodowy, który pokazuje, jak możesz użyć konwerter wartości, aby utworzyć wyłączony obraz w locie. Jestem z wami, że frustrujące jest pisanie kodu, aby robić rzeczy, które WinForm robi za darmo, ale przynajmniej nie trzeba generować obrazów. http://www.codeproject.com/KB/WPF/GrayscaleButton.aspx – kbrimington

8

Użyłem poniższy kod do tworzenia zdjęć wewnątrz przycisków mieć pół krycie, gdy przycisk jest wyłączony i działa świetnie!

<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> 
Powiązane problemy