У меня есть следующий преобразователь:
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
Debug.WriteLine(value.GetType());
//The rest of the code
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
И XAML, который пытается использовать преобразователь:
<ListView ItemsSource="{x:Bind StickersCVS.View}" >
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:StickerCategory">
<TextBlock Foreground="{x:Bind Converter={StaticResource MyConverter}}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Это дает мне NPE в value.GetType()
, по-видимому, переданное значение равно null
.
Если я изменю следующую часть:
<TextBlock Foreground="{x:Bind Converter={StaticResource MyConverter}}"/>
to
<TextBlock Foreground="{Binding Converter={StaticResource MyConverter}}"/>
Тогда это работает. Debug
правильно выводит StickerCategory
как тип значения. Любая причина, почему x:Bind
передает null
в преобразователь и как заставить его работать с x:Bind
? Я пытаюсь передать DataContext
своему преобразователю.
<TextBlock Text="{x:Bind Action}" Foreground="{x:Bind Converter={StaticResource MyConverter, Mode=OneWay}"/>
Всё равно NPE. Всё равно спасибо :) - person Andreas Wong   schedule 13.11.2015Mode=OneWay
или без него он сначала будет нулевым, но без него он никогда не изменится. Таким образом, поскольку в вашем конвертере нет проверки на нулевое значение, ваша программа, вероятно, никогда не дойдет до случая, когда на самом деле присутствует значение?! - person Markus Hütter   schedule 14.11.2015