Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF触发器不为空_Wpf_Triggers - Fatal编程技术网

WPF触发器不为空

WPF触发器不为空,wpf,triggers,Wpf,Triggers,当属性不为null时,如何在WPF中触发操作? 当为空时,这是一个有效的解决方案: <Style.Triggers> <DataTrigger Binding="{Binding}" Value="{x:Null}"> <Setter Property="Background" Value="Yellow" /> </DataTrigger> </Style.Triggers> 我知道你不能“扭转”

当属性不为null时,如何在WPF中触发操作? 当为空时,这是一个有效的解决方案:

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

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

    </DataTrigger>
</Style.Triggers>


我知道你不能“扭转”状况并做你需要的事情,但我想知道不幸的是,你不能。但实际上这并不是必需的:您只需要在样式设置器中而不是触发器中指定值不为null时的背景:

<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>

您可以使用Expression Blend附带的Microsoft.Expression.Interactions.dll中的
DataTrigger

代码示例:

<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>

这是一个老问题,但我想回答。事实上你可以。只需在绑定中使用转换器。转换器必须返回空值或非空值。所以你们要检查这个陈述是真是假。它提供了两个条件,如果返回值为false,则表示它不为null。如果为true,则表示为null

<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;
    }
}

公共类IsNulConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
返回值==null;
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
不做任何事;
}
}
这是一个副本:
<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;
    }
}