Отправка 2 контрольных значений в конвертер - PullRequest
0 голосов
/ 22 июня 2011

В моем приложении 2 целых элемента управления вверх-вниз.1 представляет минуты из промежутка времени, другой представляет секунды из промежутка времени.Я хочу связать эти значения с временным интервалом.Я знаю, что мне нужно использовать конвертер для этого.Однако мне также нужно отправить оба значения в конвертер при любом событии изменения.Поэтому, если пользователь меняет минуты, мне нужно сделать новый интервал времени из минут и секунд.Есть ли способ отправить оба этих значения в преобразователь или мне нужно сделать это, мне нужно сделать это в приведенном ниже коде?

Вот XAML для двух элементов управления.

<extToolKit:IntegerUpDown Minimum="0" Margin="1,3,0,4" x:Name="iupApproachMin">
    <extToolKit:IntegerUpDown.Value>
        <PriorityBinding FallbackValue="50">
            <Binding Path="VehicleEntryTaskStandards.MaxEntryTimeRequirement" Converter="{StaticResource timeSpanConvertor}">
            </Binding>
        </PriorityBinding>
    </extToolKit:IntegerUpDown.Value>
</extToolKit:IntegerUpDown>
<Label>min</Label>
<extToolKit:IntegerUpDown Minimum="0" Maximum="59" Margin="1,3,0,4" FormatString="00" Value="10"></extToolKit:IntegerUpDown>
<Label>sec</Label>

Вот код конвертера

[ValueConversion(typeof(TimeSpan),typeof(int))]
public class TimespanConverter:IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int minutes = ((TimeSpan)value).Minutes;
        return minutes;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        TimeSpan resultTimeSpan = new TimeSpan();

        int minutes;
        if (int.TryParse(value.ToString(), out minutes))
        {
            resultTimeSpan = new TimeSpan(0, minutes, 0);
            return resultTimeSpan;
        }
        return DependencyProperty.UnsetValue;
    }
}

Могу ли я получить массив или список?Если да, то как это можно сделать в xaml?

Пожалуйста, помогите!

1 Ответ

2 голосов
/ 22 июня 2011

Вместо использования ValueConverter, используйте несколько свойств в ViewModel.

В установщике каждого из этих свойств соответственно обновлен интервал времени.

private TimeSpan _time;
public TimeSpan Time 
{
  get { return _time; }
  set 
  { 
    _time = value; 
    RaisePropertyChanged("Time");
  }
}

private int _minutes
public int Minutes
{ 
  get { return _minutes; }
  set 
  {
    _minutes = value;
    CalculateTimeSpan();
    RaisePropertyChanged("Minutes");
  }
}

private int _seconds
public int Seconds
{ 
  get { return _seconds; }
  set 
  {
    _seconds= value;
    CalculateTimeSpan();
    RaisePropertyChanged("Seconds");
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...