Исключение нулевой ссылки, вызванное пустым параметром команды? - PullRequest
1 голос
/ 15 июня 2011

Просто странное исключение, которое я не могу понять

Мой код:

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

И:

public ICommand OpenScenario
{
    get { return new RelayCommand(param => _OpenScenario((ManageScenarioModel)param), 
        param => ((ManageScenarioModel)param).IsOpen); }
}

private void _OpenScenario(ManageScenarioModel toOpen)
{
    toOpen.IsOpen = true;
    new ManageScenario(this).Show();
}

Однако часть param => ((ManageScenarioModel)param).IsOpen) при запуске выдает исключительную ссылку, может кто-нибудь объяснить, почему это так?

Спасибо, Алекс.

1 Ответ

1 голос
/ 15 июня 2011

Поскольку WPF вызывает выражение «CanExecute», чтобы определить, должна ли кнопка быть включена.Видимо, ваша привязка приводит к пустому параметру команды.Вам, вероятно, следует проверить нулевой параметр и вернуть false.

param => (param != null && ((ManageScenarioModel)param).IsOpen)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...