C# 为什么绑定值为null时不调用命令?
我已经创建了一个网格,我想用null或空值启动它。 但是当我的textblocks绑定值为空时,单击/点击不会触发该命令。 当我有一个值时,它工作得很好。 我也尝试过使用string.empty,这也不起作用。如果有人能解释一下,我会很高兴的 XAML 行类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
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>