如果值与550不同,我很难理解如何禁用文本框。如果初始值与550不同,则禁用所有值;如果初始值等于550,则启用所有值。问题是,当我更改UI中的值时,它不会更新。
这是我的xaml
<src:CustomTextBox VerticalAlignment = "Center"
Text="{Binding TrafoProperties.InsulationLevels.LightningImpulseVoltage,
UpdateSourceTrigger = PropertyChanged,
Mode = TwoWay,
ValidatesOnNotifyDataErrors = True,
NotifyOnValidationError = True}"
Validation.ErrorTemplate = "{StaticResource defaultErrorTemplate}"
IsEnabled="{Binding Path = TrafoProperties.InsulationLevels.IsEnabled, Mode = TwoWay}"/>还有我的两条船
public double LightningImpulseVoltage
{
get { return _LightningImpulseVoltage; }
set
{
SetProperty(ref _LightningImpulseVoltage, value);
if (OnLightningImpulseVoltage != null)
OnLightningImpulseVoltage();
}
}
public bool IsEnabled
{
get { return LightningImpulseVoltage == 550; }
set
{
OnPropertyChanged("LightningImpulseVoltage");
}
} 我的SetProperty
protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)
{
if (object.Equals(storage, value))
return false;
storage = value;
this.OnPropertyChanged(propertyName);
return true;
}还有我的OnPropertyChanged
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var eventHandler = this.PropertyChanged;
if (eventHandler != null)
{
eventHandler(this, new PropertyChangedEventArgs(propertyName));
}
}发布于 2015-11-05 15:21:21
您绑定到依赖于IsEnabled的LightingImpulseVoltage。如果希望在LightingImpulseVoltage值更改时更新绑定,则需要在属性设置器中引发PropertyChanged,如下所示:
public double LightningImpulseVoltage
{
get { return _LightningImpulseVoltage; }
set
{
SetProperty(ref _LightningImpulseVoltage, value);
if (OnLightningImpulseVoltage != null)
OnLightningImpulseVoltage();
OnPropertyChanged("IsEnabled");
}
}https://stackoverflow.com/questions/33547219
复制相似问题