C# Null命令参数导致的Null引用异常?

C# Null命令参数导致的Null引用异常?,c#,.net,wpf,xaml,.net-4.0,C#,.net,Wpf,Xaml,.net 4.0,只是一个奇怪的例外,我无法理解 我的代码: <ListBox Grid.Row="1" Grid.Column="0" Background="{StaticResource ContentBackgroundColour}" BorderThickness="0" Margin="0,3,0,3" ItemsSource="{Binding Path=Scenarios}" HorizontalContentAlignment="Stretch" Padding="0">

只是一个奇怪的例外,我无法理解

我的代码:

<ListBox Grid.Row="1" Grid.Column="0" Background="{StaticResource ContentBackgroundColour}" BorderThickness="0" Margin="0,3,0,3" ItemsSource="{Binding Path=Scenarios}" HorizontalContentAlignment="Stretch" Padding="0">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding}" HorizontalContentAlignment="Left" Command="{Binding Path=OpenScenario}" CommandParameter="{Binding}"></Button>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
但是,部件
param=>((ManageScenarioModel)param).IsOpen)
在启动时抛出空引用异常,有人能解释一下这是为什么吗

谢谢,
Alex。

因为WPF正在调用“CanExecute”表达式来确定是否应启用按钮。显然,您的绑定导致了一个空的命令参数。您可能应该检查null参数并返回false

param => (param != null && ((ManageScenarioModel)param).IsOpen)

因为WPF正在调用“CanExecute”表达式以确定是否应启用该按钮。显然,您的绑定导致了一个空的命令参数。您可能应该检查null参数并返回false

param => (param != null && ((ManageScenarioModel)param).IsOpen)

您是否在问为什么会得到NullReferenceException,或者为什么param即使在绑定中也是null?为什么param一开始就是null?我的意思是我用它来创建按钮和添加文本,但是作为命令参数它是空的?绑定没有任何特定的执行顺序,因此,根据程序的状态,所有内容在开始时都可以为null。您是否在问为什么会得到NullReferenceException,或者为什么即使在绑定中,param也为null?为什么param一开始甚至为null?我的意思是我用它来创建按钮和添加文本,但是作为一个命令参数,它是空的?绑定没有任何特定的执行顺序,所以根据程序的状态,在开始时一切都可以是空的。