2016-04-07 1 views
1

J'ai créé un bouton bascule dans WPF. Chaque état est représenté par une image. On dirait que:Comment mettre les info-bulles en fonction de l'état du bouton, WPF

<ToggleButton Click="ButtonEnable_Click" x:Name="ButtonEnable" Width="36" Height="36" ToolTipService.ShowOnDisabled="true" > 
    <ToggleButton.Resources> 
     <BitmapImage x:Key="imgNormal" UriSource="/Project;component/Resources/images/Image-active.png"/> 
     <BitmapImage x:Key="imgChecked" UriSource="/Project;component/Resources/images/Image-inactive.png"/> 
    </ToggleButton.Resources> 
    <ToggleButton.Style> 
     <Style TargetType="ToggleButton"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ToggleButton"> 
         <Image x:Name="PART_Image" Source="{StaticResource imgNormal}"/> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsChecked" Value="true"> 
           <Setter TargetName="PART_Image" Property="Source" Value="{StaticResource imgChecked}"/> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter TargetName="PART_Image" Property="Source" Value="{StaticResource imgNormal}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ToggleButton.Style> 
</ToggleButton> 

Et tout fonctionne bien. Mais je veux créer une info-bulle pour chaque état de mon bouton bascule. Un "Actif, blabla". Et l'autre "Blabla inactif". Et mon logiciel doit être localisé, donc le texte de l'info-bulle est basé sur une ressource (en, fr, de, etc).

D'après ce que je l'ai vu, je suis sûr qu'il est un simple mot-clé ou quelque chose ... Mais je ne sais pas ce mot-clé, et où je dois mettre ...

Merci beaucoup. Salut.

Répondre

0

U se Style quelque chose comme:

<Trigger Property="IsChecked" Value="True"> 
      <Setter Property="ToolTip" Value="{x:Static local:MainWindow.Tooltip1}"/> 
</Trigger> 
<Trigger Property="IsChecked" Value="False"> 
      <Setter Property="ToolTip" Value="{x:Static local:MainWindow.Tooltip2}"/> 
</Trigger> 

Propriété: Utilisez CLR property pour obtenir des valeurs à partir du fichier de ressources

private static string tooltip1; 

    public static string Tooltip1 
    { 
     get 
     { 
      if (tooltip1 == null) 
      { 
       tooltip1 = "";//get this value form Resources 
      } 
      return tooltip1; 
     } 

    } 
+0

Merci beaucoup, ça a fonctionné parfaitement :). – Ahonir

+0

@Ahonir votre accueil :) –

1

Vous pouvez simplement définir la propriété infobulle

  <ToggleButton.Style> 
       <Style TargetType="ToggleButton"> 
        <Style.Triggers> 
         <Trigger Property="IsChecked" Value="True"> 
          <Setter Property="ToolTip" Value="Active"></Setter> 
         </Trigger> 
        </Style.Triggers> 
        <Setter Property="ToolTip" Value=""></Setter> 
       </Style> 
      </ToggleButton.Style>