Я пытаюсь преобразовать некоторые единицы. Как должна работать функция конвертирования со следующим. Получил следующий XAML. Тег установлен на уникальный объект в моей модели ViewModel.MultiBinding Convert Back function
<TextBox Grid.Row="2" Grid.Column="0" Margin="5" HorizontalAlignment="Right" Tag ="{Binding MyObject1}" Style ="{StaticResource TextBoxStyle}"/>
<TextBox Grid.Row="2" Grid.Column="1" Margin="5" HorizontalAlignment="Right" Tag ="{Binding MyObject2}" Style ="{StaticResource TextBoxStyle}"/>
с этим стилем ...
<Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Text">
<Setter.Value>
<MultiBinding Converter="{StaticResource EditUnitsConverterEx}">
<Binding RelativeSource="{RelativeSource Self}" Path="Tag"/>
<Binding Path="IsMetric"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
с этим преобразователем ...
class EditUnitsConverter : IMultiValueConverter
{
MyObject item; //
bool IsMetric; // bool telling me what units the system is in
public object Convert(object[] values,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
string sResult = "";
if (values[0] != null && values[1] != null)
{
item = values[0] as MyObject;
IsMetric = (bool)values[1];
sResult = item.Value;
switch (item.Type)
{
case UnitsType.Distance:
case UnitsType.Speed:
if (IsMetric && !item.UnitsAreMetric)
{
double dValue;
double.TryParse(item.Value, out dValue);
dValue = dValue * 25.4;
sResult = dValue.ToString();
}
else if (!IsMetric && item.UnitsAreMetric)
{
double dValue;
double.TryParse(item.Value, out dValue);
dValue = dValue/25.4;
sResult = dValue.ToString();
}
break;
case UnitsType.Weight:
break;
case UnitsType.Force:
break;
default:
sResult = item.Value;
break;
}
}
return sResult;
}
public object[] ConvertBack(object value,
Type[] targetTypes,
object parameter,
System.Globalization.CultureInfo culture)
{
// throw new NotImplementedException();
// Need to know here what Object/Tag item I am dealing with ?????
}
}
Любые идеи с примерами кода. Спасибо за помощь !
Я не уверен, что вы можете восстановить два объекта, что ваш мульти-преобразователь на общих если вы удаляете информацию о единице измерения от преобразованного значения. Как вы ожидаете, что это сработает? –