我正在尝试将viewmodel中定义的变量传递给自定义转换器。
这是xaml文件:
<ContentPage.Resources>
<ResourceDictionary>
<converter:IsLastItemConverter x:Key="lastItemConverter" Collection="{Binding Selfies}" />
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
....
<local:Selfie IsLastItem="{Binding ID, Converter={StaticResource lastItemConverter}}" />
....
</ContentPage.Content>
这是
背后的xaml.cs代码[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class SelfieWall : BaseContentPage
{
public SelfieWall()
{
InitializeComponent();
this.BindingContext = new SelfieWallViewModel();
}
}
这是ViewModel
public class SelfieWallViewModel : INotifyPropertyChanged
{
....
public List<Model.Selfie> Selfies { get; set; }
....
}
这是转换器
public class IsLastItemConverter : IValueConverter
{
public List<Selfie> Collection { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return true;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return true;
}
}
当我尝试加载上面的xaml中定义的视图时,我收到错误
System.NullReferenceException: Object reference not set to an instance of an object.
如果我删除
,错误就会消失Collection="{Binding Selfies}"
来自XAML的。
有关如何将ViewModel的变量传递给转换器的任何提示。
答案 0 :(得分:0)
如果我理解正确,您想知道Selfies
中的项目是否是最后一项。我认为你不能用IValueConverter做到这一点。我建议您在Model.Selfie
中使用每次在集合中添加/删除项目时设置的属性。