C# 如果值通过数据绑定为空,则禁用按钮

C# 如果值通过数据绑定为空,则禁用按钮,c#,wpf,xaml,data-binding,null,C#,Wpf,Xaml,Data Binding,Null,我在我的MainViewModel中有一个引用,它在运行时可以为null。在这种情况下,我需要一个按钮(WPF)来禁用自身,如果该引用不再为null,它应该启用自身。我想用数据绑定解决这个任务,但我不确定如何在数据绑定中执行空检查。我的按钮: <Button x:Name="SomeButton" IsEnabled="{Binding Path=NullableProperty , Mode=OneWay}" /> 刚刚注意到,您可以将数据绑定的TargetNullValu

我在我的
MainViewModel
中有一个引用,它在运行时可以为null。在这种情况下,我需要一个按钮(WPF)来禁用自身,如果该引用不再为null,它应该启用自身。我想用数据绑定解决这个任务,但我不确定如何在数据绑定中执行空检查。我的按钮:

<Button x:Name="SomeButton"   IsEnabled="{Binding Path=NullableProperty , Mode=OneWay}" />


刚刚注意到,您可以将数据绑定的
TargetNullValue
设置为
false
,这实际上完成了所有操作。

您可以使用数据触发器来完成此操作:

例如:

<Button Content="Click">
        <Button.Style>
            <Style TargetType="Button">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding CanContainNull}" Value="{x:Null}">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>

    </Button>

通常,您会将ICommand绑定到该按钮,并且当属性为null时,该命令将引发CanExecute=false。这会自动禁用按钮
public string CanContainNull
{
    get
    {
        return _canContainNull;
    }
    set
    {
        _canContainNull = value;
        RaisePropertyChanged();
    }
}