對于此示例,我使用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(),但這并沒有導致成功。如何正確檢查用戶是否輸入了有效的雙精度值?
uj5u.com熱心網友回復:
由于 C# 是一種強型別編程語言,因此只能將double諸如此類的屬性設定為有效值。它永遠不能設定為其他東西,例如 a 。MyDoubleValuedoublestring
(僅限)如果將屬性的型別更改為string,則可以使用以下方法確定是否給出了有效值double.TryParse:
private string _myDoubleValue;
public string MyDoubleValue
{
get { return _myDoubleValue; }
set { SetProperty(ref _myDoubleValue, value); }
}
bool CanExecuteSaveParametersCommand()
{
return double.TryParse(_myDoubleValue, out var doubleValue);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/425999.html
