У меня есть два текстовых поля поиска: Above
и Below
, что я должен установить с ограничениями. Число в Below
не может быть больше числа в Above
, а число в Above
не может быть ниже, чем в Below
.Одно из двух текстовых полей не обновляется привязкой
Если одно число неверно, оно должно быть установлено равным другому числу.
Проблема в том, что Above
не обновляется, в то время как Bottom
(хотя свойства заданы одинаково).
XAML:
<common:SearchTextBox Grid.Column="1"
VerticalAlignment="Center"
Label="Enter value in feet"
common:AllowableTextInput.IsIgnoreWhiteSpace="True"
common:AllowableTextInput.IsMatch="^[0-9]{0,5}$"
Text="{Binding Path=AboveAircraft, UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource AboveAircraftConveter}, ConverterParameter=4000}"/>
<Label Grid.Row="1" Grid.Column="0"
Style="{StaticResource FormLabelStyle}"
Content="Below Aircraft (ft):"/>
<common:SearchTextBox Grid.Row="1" Grid.Column="1"
VerticalAlignment="Center" HorizontalAlignment="Stretch"
common:AllowableTextInput.IsIgnoreWhiteSpace="True"
common:AllowableTextInput.IsMatch="^[0-9]{0,5}$"
Text="{Binding Path=BelowAircraft, UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource BelowAircraftConveter}, ConverterParameter=2000}"
Label="Enter value in feet" />
C#:
public int AboveAircraft
{
get { return _above; }
set
{
if (SetProperty(ref _above, value, "AboveAircraft") && _updateModel)
{
if (Model.AltitudeBand == null)
{
Model.AltitudeBand = new AltitudeBand();
}
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("AboveAircraft"));
if (_above < _below)
{
_below = AboveAircraft;
}
}
Model.AltitudeBand.Above = new AltitudeBandLimit() { Unit = AltitudeUnit.Foot, Value = _above };
}
}
}
/// <summary>
/// Below the route of flight in ft
/// </summary>
public int BelowAircraft
{
get { return _below; }
set
{
if (SetProperty(ref _below, value, "BelowAircraft") && _updateModel)
{
if (Model.AltitudeBand == null)
{
Model.AltitudeBand = new AltitudeBand();
}
if (PropertyChanged != null)
{
_below = value;
PropertyChanged(this, new PropertyChangedEventArgs("BelowAircraft"));
if (_below > _above)
{
AboveAircraft = _below;
}
}
Model.AltitudeBand.Below = new AltitudeBandLimit() { Unit = AltitudeUnit.Foot, Value = _below };
}
}
}
Какие значения вы испытываете? Что делают 'AboveAircraftConveter' и' BelowAircraftConveter'? Какое влияние оказывают значения «ConverterParameter»? –
Здесь находятся преобразователи: –
AboveAircraftConveter и BelowAircraftConveter конвертировать int в строку. На вкладке «Конвертор» устанавливается значение по умолчанию на экране. Я тестировал различное значение от 1000 до 9000. –