向转换器发送2个控制值
本文关键字:控制 2个 转换器 | 更新日期: 2023-09-27 17:59:45
我的应用程序中有两个整数上下控件。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中做到这一点?
请帮忙!
不要使用ValueConverter,而是在ViewModel中使用几个属性。
在这些属性中的每一个的setter中,TimeSpan都得到了适当的更新。
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");
}
}