基于两个日期属性的比较,我想在Xamarin表单ListView网格中显示一些文本。我有一个转换器来比较日期并返回一个字符串。我试图做的(没有成功)是将整个对象传递给转换器。
XAML:
<ResourceDictionary>
<converters1:CancelConverter x:Key="CancelConverter" />
</ResourceDictionary>
...
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Label Grid.Column="0" Text="{Binding ., Converter={StaticResource CancelConverter}}" />
</Grid>
</ViewCell>
</DataTemplate>
转换器:
public class CancelConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Schedule schedule = ((Schedule)value);
DateTime date1 = schedule.ProposedCollectionDate;
DateTime date2 = schedule.OrderDate;
if (date1.CompareTo(date2) < 0)
{
return "Cancel this order";
}
}
}
问题是在转换器中,值为null。如何将对象传递给转换器,而不只是对象的单个属性?
答案 0 :(得分:0)
您显示的内容对我来说看起来不错,但是隐藏的内容可能有些不好。我不知道,但是您是否正确设置了ListView
的绑定上下文,即是否设置了ItemsSource
属性?根据您提供的信息,应该将其设置为ObservableCollection<Schedule>
或IEnumerable<Schedule>
之类的东西,然后ListView
中的每个项目都将Schedule
作为绑定上下文,它将愉快地进入值转换器。