XAML转换器绑定了多个属性

时间:2018-12-03 17:01:33

标签: xaml xamarin.forms

基于两个日期属性的比较,我想在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。如何将对象传递给转换器,而不只是对象的单个属性?

1 个答案:

答案 0 :(得分:0)

您显示的内容对我来说看起来不错,但是隐藏的内容可能有些不好。我不知道,但是您是否正确设置了ListView的绑定上下文,即是否设置了ItemsSource属性?根据您提供的信息,应该将其设置为ObservableCollection<Schedule>IEnumerable<Schedule>之类的东西,然后ListView中的每个项目都将Schedule作为绑定上下文,它将愉快地进入值转换器。