Frage

Ich bin mit Datatemplates Elementen in einem Item zu machen. Ich möchte für jedes Element einen Tooltip zeigen. Wenn ich eine Bindung wie Quick-Info verwenden = „{Binding MyToolTip, Mode = OneWay}“, WPF den Tooltip einmal am Anfang bekommt und nicht den Tooltip aktualisieren, wenn es geöffnet wird.

Meine Artikel implementieren INotifyPropertyChanged, so im Prinzip I Änderungsbenachrichtigungen für MyToolTip erzeugen könnte. Das Problem ist, wird der Tooltip basierend auf vielen Stücke von Informationen, die in der zugrunde liegenden Modell erzeugt. Diese Informationen ändern sich häufig und es wäre sowohl umständlich und ineffizient sein, um Änderungsbenachrichtigungen für die MyToolTip Eigenschaft zu erzeugen. Außerdem will ich nicht Tooltips für alle Elemente zunächst hergestellt werden. Stattdessen würde Ich mag einen neuen Tooltip zwingen, erzeugt wird, wenn der Tooltip geöffnet wird. Wie kann ich es tun?

War es hilfreich?

Lösung

Sie werden ein wenig Code-behind verwenden, aber es ist nicht so schlimm.

<object ToolTip="{Binding MyToolTip, Mode=OneWay}" ToolTipOpening="MyToolTip_Opening" />

Im Code-behind

private void MyToolTip_Opening(object sender, ToolTipEventArgs e)
{
    DependencyObject depObj = sender as DependencyObject;
    if (depObj == null) return;
    BindingExpression be = BindingOperations.GetBindingExpression(depObj, FrameworkElement.ToolTipProperty);
    if (be != null) be.UpdateTarget();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top