对于此示例,我使用Prism.WPF。我的 WPF 中有一个 TextBox 和一个按钮:
<TextBox Text="{Binding MyDoubleValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Button Width="200" Command="{Binding SaveParametersCommand}">Save</Button>
和相应的属性:
private double _myDoubleValue;
public double MyDoubleValue
{
get { return _myDoubleValue; }
set { SetProperty(ref _myDoubleValue, value); }
}
如果用户更改值以输入正确的双精度值,则方法应可执行:
private DelegateCommand _saveParametersCommand;
public DelegateCommand SaveParametersCommand =>
_saveParametersCommand ?? (_saveParametersCommand
= new DelegateCommand(ExecuteSaveParametersCommand, CanExecuteSaveParametersCommand)
.ObservesProperty(() => MyDoubleValue))
);
void ExecuteSaveParametersCommand(){ /* ... */}
void CanExecuteSaveParametersCommand(){
// How to ensure that a correct double is inserted?
}
我试图将双精度转换为带有“。”的字符串。作为分隔符并检查string.IsNullOrEmpty()
,但这并没有导致成功。如何正确检查用户是否输入了有效的双精度值?