2011-09-08 19 views
5

ho una semplice applicazione WPF con un pulsante il cui tooltip è rilegato a un TextBlock.Text:tooltip Vuoto problema

<Grid> 
    <Button Height="23" Margin="82,0,120,105" Name="button1" VerticalAlignment="Bottom" ToolTip="{Binding ElementName=textBlock1,Path=Text}" Click="button1_Click">Button</Button> 
    <TextBlock Height="23" Margin="64,55,94,0" Name="textBlock1" VerticalAlignment="Top" Text="AD" /> 
</Grid> 

In button1_Click, ho:

textBlock1.Text = null; 

mi aspettavo alcun suggerimento per il pulsante dopo il clic del pulsante. Tuttavia, sto ricevendo un suggerimento emty. Come posso risolvere questo?

+0

se si utilizza un code-behind in ogni caso non è possibile impostare direttamente il tooltip? In caso contrario, potrebbe essere necessario utilizzare un modello/costrutto più complesso (elementi WPF) per il ToolTip, quindi una stringa – Carsten

risposta

5

Non è possibile impostare il valore Text su null, verrà immediatamente sostituito da una stringa vuota.

Soluzione # 1: uno stile che cancella il valore:

<!-- Do NOT set the ToolTip on the Button itself --> 
<Style TargetType="Button" xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <Setter Property="ToolTip" Value="{Binding ...}"/> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding ...}" Value="{x:Static sys:String.Empty}"> 
      <Setter Property="ToolTip" Value="{x:Null}" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

Soluzione # 2: Aggiungere un ValueConverter al legame che restituisce null se il value è String.Empty.

Potrebbero esserci altri modi.

+2

la domanda era come risolvere: non è più simile a un commento? – Carsten

+0

@ CarstenKönig: sono stati aggiunti alcuni accorgimenti. –

+0

@ CarstenKönig: ... anche se penso che solo la realizzazione di ciò che causa il problema sia sufficiente per indurre la maggior parte delle persone a risolvere il problema da soli. Quindi la mia versione precedente probabilmente avrebbe potuto resistere da sola. –