{"id":55000030,"date":"2016-04-01T00:00:00","date_gmt":"2020-03-27T19:18:14","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=30"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"WPFControls_ToolTips","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/WPFControls_ToolTips\/","title":{"rendered":"WPF-Controls: ToolTips"},"content":{"rendered":"<p><b>Unter Access\/VBA fristeten die ToolTips ein Schattendasein. Sie konnten daf&uuml;r lediglich einen Text angeben, der beim &Uuml;berfahren des jeweiligen Steuerelements eingeblendet wurde und dann wieder verschwand. Es gab keinerlei M&ouml;glichkeiten, das Aussehen des ToolTips zu beeinflussen. Unter WPF sieht dies ganz anders aus: Sie k&ouml;nnen nicht nur das Aussehen und den Inhalt vielf&auml;ltig gestalten, sondern auch noch bestimmen, wann und wie der ToolTip ein- und ausgeblendet wird.<\/b><\/p>\n<h2>ToolTip f&uuml;r Button-Steuerelemente<\/h2>\n<p>Von Access\/VBA haben Sie mit der Eigenschaft <b>SteuerelementTip-Text <\/b>(unter VBA <b>ControlTipText<\/b>) festgelegt, welcher Text angezeigt werden soll, wenn der Benutzer mit dem Mauszeiger &uuml;ber dem Steuerelement verweilt. Eine solche Eigenschaft gibt es nat&uuml;rlich auch unter WPF. Am einfachsten f&uuml;gen Sie einen solchen Hinweistext hinzu, indem Sie einfach das entsprechende Attribut des betroffenen Steuerelements verwenden &#8211; in diesem Fall f&uuml;r ein <b>Button<\/b>-Element:<\/p>\n<pre>&lt;Button x:Name=\"btnToolTip\" Content=\"Button mit ToolTip\" ... ToolTip=\"Ich bin ein Tooltip f&uuml;r einen Button!\"\/&gt;<\/pre>\n<p>Das Ergebnis sieht dann etwa wie in Bild 1 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_02\/pic_30_008.png\" alt=\"Schaltfl&auml;che mit einem einfachen ToolTip-Text\" width=\"425\" height=\"150,5381\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Schaltfl&auml;che mit einem einfachen ToolTip-Text<\/span><\/b><\/p>\n<p>Das <b>ToolTip<\/b>-Element ist tats&auml;chlich ein echtes Steuerelement, das Sie mit beliebigen Inhalten f&uuml;llen k&ouml;nnen. Wie das aussehen kann, sehen Sie in Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_02\/pic_30_009.png\" alt=\"Erweiterter ToolTip-Text\" width=\"425\" height=\"219,5695\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Erweiterter ToolTip-Text<\/span><\/b><\/p>\n<p>Der notwendige Code ist in Listing 1 abgebildet. Hier ist zu beachten, dass wir nicht mehr das Attribut <b>ToolTip <\/b>verwenden. Stattdessen f&uuml;gen wir dem <b>Button<\/b>-Element ein schlie&szlig;endes <b>Button<\/b>-Element hinzu (<b><\/Button><\/b>) und f&uuml;gen einige weitere Elemente innerhalb von <b><Button> <\/b>und <b><\/Button> <\/b>ein.<\/p>\n<pre>&lt;Button x:Name=\"btnToolTipElement\" Content=\"Button mit ToolTip-Element\" ...&gt;\r\n     &lt;Button.ToolTip&gt;\r\n         &lt;StackPanel&gt;\r\n             &lt;Label Content=\"Erweiterter ToolTip\" FontWeight=\"Bold\" Background=\"LightSkyBlue\" Foreground=\"White\" \/&gt;\r\n             &lt;TextBlock Padding=\"10\" TextWrapping=\"WrapWithOverflow\" Width=\"200\"&gt;\r\n                Mit dem ToolTip-Element l&auml;sst sich mehr anstellen als nur einfache Texte einzublenden.\r\n             &lt;\/TextBlock&gt;\r\n             &lt;Line Stroke=\"Black\" StrokeThickness=\"1\" X2=\"200\"\/&gt;\r\n             &lt;StackPanel Orientation=\"Horizontal\"&gt;\r\n                 &lt;Image Margin=\"2\" Source=\"question_32.png\" \/&gt;\r\n                 &lt;Label FontWeight=\"Bold\" Content=\"F1 f&uuml;r weitere Infos.\" \/&gt;\r\n             &lt;\/StackPanel&gt;\r\n         &lt;\/StackPanel&gt;\r\n     &lt;\/Button.ToolTip&gt;\r\n&lt;\/Button&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Einen ausgefeilten ToolTip zu einem Button-Element hinzuf&uuml;gen<\/span><\/b><\/p>\n<p>Dabei handelt es sich zun&auml;chst um das <b>Button.ToolTip<\/b>-Element, das ohne eigene Attribute kommt, sondern nur den Rahmen f&uuml;r die anzuzeigenden Inhalte liefert. Darin bringen wir ein <b>StackPanel<\/b>-Element unter. Dieses haben Sie bisher in diesem Magazin noch nicht kennen gelernt, daher in aller K&uuml;rze: Es handelt sich dabei wie beim Grid um ein Element zur einfachen Anordnung von Inhalten in vertikaler oder horizontaler Ausrichtung.<\/p>\n<p>Das erste <b>StackPanel<\/b>-Element enth&auml;lt einige untereinander darzustellende Elemente: Ein <b>Label<\/b>, einen <b>TextBlock<\/b>, eine Linie (<b>Line<\/b>) und ein weiteres <b>StackPanel<\/b>. Dieses soll seine Unterelemente nun horizontal ausrichten, also nebeneinander &#8211; und zwar ein <b>Image<\/b>-Element und ein <b>Label<\/b>-Element.<\/p>\n<p>Damit das dem <b>Image<\/b>-Element zugewiesene Bild angezeigt wird, m&uuml;ssen Sie dieses dem Projekt hinzuf&uuml;gen. Im Beispielprojekt ist dieses bereits enthalten.<\/p>\n<h2>Zeitvorgaben f&uuml;r Einblenden, Ausblenden et cetera<\/h2>\n<p>Sie k&ouml;nnen mit drei Eigenschaften das Verhalten festlegen, wie schnell ToolTip-Texte mit weiteren Informationen ein- und ausgeblendet werden.<\/p>\n<p>Diese sind Eigenschaften des Objekts <b>ToolTipService<\/b>:<\/p>\n<ul>\n<li><b>InitialShowDelay<\/b>: Gibt die Anzahl der Millisekunden an, bis der ToolTip nach Positionieren des Mauszeigers auf dem Steuerelement eingeblendet wird.<\/li>\n<li><b>ShowDuration<\/b>: Gibt die Anzahl der Millisekunden an, bis der ToolTip wieder ausgeblendet wird.<\/li>\n<li><b>BetweenShowDelay<\/b>: Betrifft Fenster mit mehreren ToolTips. Wenn Sie f&uuml;r ein Steuerelement <b>ToolTipService.BetweenShowDelay <\/b>etwa auf <b>3.000 <\/b>einstellen, dann wird innerhalb dieser drei Sekunden jeder <b>ToolTip <\/b>anderer Steuerelemente unmittelbar nach dem &Uuml;berfahren mit der Maus angezeigt &#8211; egal, welchen Wert die Eigenschaft <b>InitialShowDelay <\/b>aufweist.<\/li>\n<\/ul>\n<p>Die folgenden drei Schaltfl&auml;chen zeigen, wie Sie die zeitbezogenen Attribute festlegen. Beachten Sie, dass die Attribute nicht direkt als Attribute des &uuml;bergeordneten Elements, sondern als Attribute des Elements <b>ToolTipService <\/b>angegeben werden:<\/p>\n<pre>&lt;Button x:Name=\"btnVerzoegerung\" Content=\"Verz&ouml;gerung beim Anzeigen\" ... ToolTip=\"ToolTip mit verz&ouml;gerter Anzeige (drei Sekunden)\" ToolTipService.InitialShowDelay=\"3000\" \/&gt;\r\n&lt;Button x:Name=\"btnAusblenden\" Content=\"Ausblenden nach 5 Sekunden\" ... ToolTip=\"ToolTip mit schnellem Ausblenden (eine Sekunde)\" ToolTipService.ShowDuration=\"1000\"\/&gt;\r\n&lt;Button x:Name=\"btnBetweenShowDelay\" Content=\"Andere schnell anzeigen\" ... ToolTip=\"Innerhalb von drei Sekunden werden ToolTips, auch wenn InitialShowDelay gr&ouml;&szlig;er ist, direkt angezeigt.\" ToolTipService.BetweenShowDelay=\"3000\"\/&gt;<\/pre>\n<h2>Platzierung der ToolTip-Elemente<\/h2>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000030\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000030?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000030\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"9fac6dd15a\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unter Access\/VBA fristeten die ToolTips ein Schattendasein. Sie konnten daf&uuml;r lediglich einen Text angeben, der beim &Uuml;berfahren des jeweiligen Steuerelements eingeblendet wurde und dann wieder verschwand. Es gab keinerlei M&ouml;glichkeiten, das Aussehen des ToolTips zu beeinflussen. Unter WPF sieht dies ganz anders aus: Sie k&ouml;nnen nicht nur das Aussehen und den Inhalt vielf&auml;ltig gestalten, sondern auch noch bestimmen, wann und wie der ToolTip ein- und ausgeblendet wird.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022016,662016,44000002,44000034,44000032,44000015],"tags":[],"yst_prominent_words":[66062057,66062051,66062046],"class_list":["post-55000030","post","type-post","status-publish","format-standard","hentry","category-66022016","category-662016","category-Benutzeroberflaeche_mit_WPF","category-COMAddIns_programmieren","category-VBNETProgrammierung","category-WPFSteuerelemente"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000030"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000030\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000030"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}