【发布时间】:2017-07-13 13:34:39
【问题描述】:
我有一个名为 TransportModeType 的枚举列表绑定到一个 Listview,数据模板中有一个转换器。 ViewModel 看起来像这样
public class TransportTypeViewMode:ViewModelBase{
public TransportTypeViewMode()
{
TransportTypes= new List<TransportTypeEnum>();
TransportTypes.add(TransportTypeEnum.Car);
TransportTypes.add(TransportTypeEnum.Bus);
TransportTypes.add(TransportTypeEnum.Plane);
}
List<TransportTypeEnum> TransportTypes{get;set;}}
ListView 是这样的
<ListView ItemsSource="{Binding TransportModeTypes}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ContentView>
<Image Source="{Binding Converter={StaticResource ListToImageConverter}}" Aspect="AspectFit"/>
</ContentView>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我的名为 ListToImageConverter 的转换器看起来像这样
public class TransportModeEnumToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var transporttModeType = (TransportModeTypeEnum) value;
string imagePath = String.Empty;
switch (transporttModeType)
{
case TransportModeTypeEnum.Bus:
imagePath = "bus.png";
break;
case TransportModeTypeEnum.Train:
imagePath = "train.png";
break;
case TransportModeTypeEnum.Car:
imagePath = "car.png";
break;
case TransportModeTypeEnum.Plane:
imagePath = "plane.png";
break;
default:
throw new ArgumentOutOfRangeException();
}
imagePath = "Common.Images." + imagePath;
var imgResc= ImageSource.FromResource(imagePath);
return imgResc;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
转换器抛出一个异常值是空的..我的绑定中缺少什么
【问题讨论】:
-
只需添加一个空检查并返回一个空字符串或其他东西。绑定完成后,它有时会被初始化为我认为的空值。您可能可以放心地忽略它
-
我认为您需要在绑定表达式中指定绑定路径
-
伟大的收获@Jason!完全忽略了那个
-
@GeraldVersluis 是对的,非常感谢
-
将其更新为答案。
标签: c# visual-studio xaml xamarin xamarin.forms