У меня есть объект ниже:Xamarin Forms ConverterParameter - как ссылаться на текущее свойство объекта?
public class MyObj {
public string Name {get; set;}
public double Weight {get; set;}
}
Я создаю ObservableCollection объектов из этого класса и присвоить его ItemsResource из ListView (через lvMyObjs ниже). У меня также есть запись.
мне нужно сделать следующее для каждой строки в моей ListView
- Получить значение из записи и передать его в конвертере
- Умножить значение входа со свойством Вес текущего элемента в преобразователь
- Показать значение в соответствующей строке в моем списке.
В XAML у меня есть это:
<Entry x:Name="entSourceValue"/>
<ContentPage.Resources>
<ResourceDictionary>
<local:SourceToTargetConverter x:Key="myConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<ListView x:Name="lvMyObjs">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ContentView>
<Frame>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Name}" />
<Label x:Name="lblResult"
Text="{
Binding Text,
Converter={StaticResource myConverter},
ConverterParameter={},
Source={x:Reference entSourceValue}
}"/>
</StackLayout>
</Frame>
</ContentView>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
В моем преобразователе я это:
public class SourceToTargetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double sourceDouble;
double.TryParse((string)value, out sourceDouble);
//todo: convert parameter to double
//double weight =
return sourceDouble * weight;
}
}
я могу получить значение моего входа в конвертере, без каких-либо проблем. Мой вопрос: как я могу отправить «Вес» текущего элемента в списке в качестве параметра в конвертер? Другими словами, что я должен положить в строку «ConverterParameter = {},"?
Любая помощь очень ценится.
Когда я отлаживаю ваш код, я получаю удар по методу конвертера при запуске приложения в симуляторе. Но ничего не происходит, когда я вводю что-то в Entry, и я даже не прихожу к методу Converter. – LonelyDeveloper
@LonelyDeveloper Вам нужно будет поднять событие с измененным свойством для объекта списка, чтобы конвертер снова запустился. – AllDayer