Montrer WPF info-bulle sur l'élément désactivé uniquement
Demandais juste si il est possible de montrer un WPF sur un élément désactivé SEULEMENT (et non pas lorsque l'élément est activé).
Je voudrais donner à l'utilisateur une info-bulle expliquant pourquoi un article est actuellement désactivé.
J'ai un IValueConverter
pour inverser le booléen IsEnabled
propriété de liaison. Mais il ne semble pas fonctionner dans cette situation. Le ToolTip
est de montrer à la fois lorsque l'élément est activé et désactivé.
Est donc est possible de lier un ToolTip.IsEnabled
propriété exclusivement à un élément propre !IsEnabled
?
Assez simple question, je suppose, mais l'exemple de code ici de toute façon:
public class BoolToOppositeBoolConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool))
throw new InvalidOperationException("The target must be a boolean");
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool))
throw new InvalidOperationException("The target must be a boolean");
return !(bool)value;
}
#endregion
}
Et de liaison:
<TabItem Header="Tab 2" Name="tabItem2" ToolTip="Not enabled in this situation." ToolTipService.ShowOnDisabled="True" ToolTipService.IsEnabled="{Binding Path=IsEnabled, ElementName=tabItem2, Converter={StaticResource oppositeConverter}}">
<Label Content="Item content goes here" />
</TabItem>
Grâce gens.
Êtes-vous sûr ToolTipService.ShowOnDisabled="True" n'est pas de l'exécution d'un "après" votre inversion? Il semble que le permis de liaison devrait être nécessaire.
Cela pourrait être le cas, mais il ne fonctionne pas sans ToolTipService.ShowOnDisabled="True". Peut-être que j'ai besoin de le gérer dans le code-behind. Je préfère le garder GUI trucs dans le code XAML, si possible.
Dans ce cas, je vous suggère de lier pour les info-bulle comme ToolTip="{Binding ElementName=tabItem2, Path=IsEnabled, Converter={StaticResource newconverter}, ConverterParameter=Réelles texte d'info-bulle va ici}", où newconverter est un nouveau type, qui retourne la valeur du paramètre si la valeur est true. Ou fausses dans votre cas, je suppose. (Aussi j'ai tapé qu'à partir de la mémoire, donc pardonnez-moi si la syntaxe est désactivé)
Cela pourrait être le cas, mais il ne fonctionne pas sans ToolTipService.ShowOnDisabled="True". Peut-être que j'ai besoin de le gérer dans le code-behind. Je préfère le garder GUI trucs dans le code XAML, si possible.
Dans ce cas, je vous suggère de lier pour les info-bulle comme ToolTip="{Binding ElementName=tabItem2, Path=IsEnabled, Converter={StaticResource newconverter}, ConverterParameter=Réelles texte d'info-bulle va ici}", où newconverter est un nouveau type, qui retourne la valeur du paramètre si la valeur est true. Ou fausses dans votre cas, je suppose. (Aussi j'ai tapé qu'à partir de la mémoire, donc pardonnez-moi si la syntaxe est désactivé)
OriginalL'auteur dant | 2010-05-23
Vous devez vous connecter pour publier un commentaire.
JustABill la suggestion de travaillé. J'ai également nécessaire de définir la chaîne comme une ressource pour éviter les problèmes avec des guillemets. Et vous devez encore définir ToolTipService.ShowOnDisabled="True".
Donc, ici, c'est le code de travail, qui montre comment afficher une info-bulle en WPF seulement lorsqu'un élément est désactivé.
Dans le conteneur, inclure l'espace de noms system (voir sys ci-dessous). J'ai aussi un Ressources de l'espace de noms, que j'ai appelé "Res".
Alors vous avez besoin
Dans mon cas, c'était un onglet élément qui m'intéressait. Il pourrait être n'importe quel élément de l'INTERFACE utilisateur...
Et le convertisseur de code derrière (ou partout où vous voulez le mettre). Remarque, le mien est allé dans la un espace de noms appelé Ressources, qui a été déclarée précédemment.
OriginalL'auteur dant
Un peu démodé, mais j'ai eu ce travail par la mise en RelativeSource mode Auto au lieu de définir la ElementName à l'intérieur de la Reliure.
OriginalL'auteur Sam