2009-08-06 7 views
4

Comment déclencher une action dans WPF lorsque la propriété n'est pas nulle? C'est une solution de travail lorsque est nul:WPF Trigger non null

<Style.Triggers> 
    <DataTrigger Binding="{Binding}" Value="{x:Null}"> 

     <Setter Property="Background" Value="Yellow" /> 

    </DataTrigger> 
</Style.Triggers> 

Je sais que vous ne pouvez pas « tourner autour » l'état et faire ce que vous avez besoin, mais voulez savoir

+1

C'est un doublon: http://stackoverflow.com/questions/356194/wpf-datatrigger-where-value-is-not-null –

Répondre

6

Malheureusement, vous ne pouvez pas . Mais en réalité, ce n'est pas nécessaire: il vous suffit de spécifier l'arrière-plan lorsque la valeur est nulle dans les setters de style, pas le déclencheur:

<Style.Setters> 
    <!-- Background when value is not null --> 
    <Setter Property="Background" Value="Blue" /> 
</Style.Setters> 
<Style.Triggers> 
    <DataTrigger Binding="{Binding}" Value="{x:Null}"> 

     <Setter Property="Background" Value="Yellow" /> 

    </DataTrigger> 
</Style.Triggers> 
+0

"Reliure" est pas une propriété ... –

5

Vous pouvez utiliser DataTrigger classe dans Microsoft.Expression.Interactions. dll qui viennent avec Expression Blend.

Exemple de code:

<i:Interaction.Triggers> 
    <ie:DataTrigger Binding="{Binding YourProperty}" Value="{x:Null}" Comparison="NotEqual"> 
     <ie:ChangePropertyAction PropertyName="YourTargetPropertyName" Value="{Binding YourValue}"/> 
    </ie:DataTrigger> 
</i:Interaction.Triggers> 

En utilisant cette méthode, vous pouvez déclencher contre GreaterThan et LessThan aussi. Pour utiliser ce code, vous devez faire référence à deux dll:

System.Windows.Interactivity.dll
Microsoft.Expression.Interactions.dll

et ajoutez les espaces de noms correspondants:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:ie="http://schemas.microsoft.com/expression/2010/interactions" 
0

C'est une vieille question, mais je veux y répondre. En fait vous pouvez. Juste vous devez utiliser Converter dans la liaison. Le convertisseur doit retourner est nul ou non. Donc, vous allez vérifier l'affirmation est vrai ou faux. Il permet de vérifier deux conditions si la valeur de retour est false, cela signifie que ce n'est pas null. Si c'est vrai, cela signifie que c'est nul.

<converters:IsNullConverter x:Key="IsNullConverterInstance"/> 

<Style> 
<Style.Triggers> 
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=DataContext, Converter={StaticResource IsNullConverterInstance}" Value="True">  
     <Setter Property="Background" Value="Yellow" />  
    </DataTrigger> 
</Style.Triggers></Style> 


    public class IsNulConverter: IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     return value == null; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     return Binding.DoNothing; 
    } 
} 
Questions connexes