C# 为什么绑定值为null时不调用命令?

C# 为什么绑定值为null时不调用命令?,c#,wpf,mvvm,command,winrt-xaml,C#,Wpf,Mvvm,Command,Winrt Xaml,我已经创建了一个网格,我想用null或空值启动它。 但是当我的textblocks绑定值为空时,单击/点击不会触发该命令。 当我有一个值时,它工作得很好。 我也尝试过使用string.empty,这也不起作用。如果有人能解释一下,我会很高兴的 XAML 行类 public class Row : ObservableObject { public Cell[] Cells { get; set; } private RelayCommand<Cell> _cellTa

我已经创建了一个网格,我想用null或空值启动它。 但是当我的textblocks绑定值为空时,单击/点击不会触发该命令。 当我有一个值时,它工作得很好。 我也尝试过使用string.empty,这也不起作用。如果有人能解释一下,我会很高兴的

XAML

行类

public class Row : ObservableObject
{
    public Cell[] Cells { get; set; }
    private RelayCommand<Cell> _cellTappedCommand;

    public RelayCommand<Cell> CellTappedCommand
    {
        get
        {
            return _cellTappedCommand ?? (_cellTappedCommand = new RelayCommand<Cell>((param) => Cellclick(param)));
        }
    }

    private void Cellclick(Cell param)
    {
        var vm = (new ViewModelLocator()).Main;
        vm.SelectedCell = param;
        // Do stuff...
   }
}
编辑: 通过将XAML更改为:

<Border Grid.Column="0">
    <interactivity:Interaction.Behaviors>
        <core:EventTriggerBehavior EventName="Tapped">
            <core:InvokeCommandAction
                    Command="{Binding CellTappedCommand}" CommandParameter="{Binding Cells[0]}"/>
        </core:EventTriggerBehavior>
    </interactivity:Interaction.Behaviors>
    <TextBlock Text="{Binding Cells[0].CellValue, Mode=TwoWay}">
    </TextBlock>
</Border>

只需将交互代码移动到周围的边界,并确保将Background属性设置为Transparent。问题解决了


//祝你好运

我想你需要我想我自己解决了这个问题,我只是把命令从文本块移到了边框。JAT,谢谢你的输入,我不知道TargetNullValue或FallbackValue,所以今天我学到了一些新东西!
<Border Grid.Column="0">
    <interactivity:Interaction.Behaviors>
        <core:EventTriggerBehavior EventName="Tapped">
            <core:InvokeCommandAction
                    Command="{Binding CellTappedCommand}" CommandParameter="{Binding Cells[0]}"/>
        </core:EventTriggerBehavior>
    </interactivity:Interaction.Behaviors>
    <TextBlock Text="{Binding Cells[0].CellValue, Mode=TwoWay}">
    </TextBlock>
</Border>