У меня есть следующий конвертер:Связывание с текущим DataContext с преобразователем с помощью х: Bind
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}}"/>
к
<TextBlock Foreground="{Binding Converter={StaticResource MyConverter}}"/>
Затем он работает. Debug
правильно выводит StickerCategory
как тип значения. Любая причина, почему x:Bind
проходит null
в конвертер и как мне заставить его работать с x:Bind
? Я пытаюсь передать DataContext
в свой конвертер.
Обратите внимание, что режим по умолчанию для х: Привязка является одноразовая (по умолчанию Связывание с OneWay). Может ли это быть основной причиной? Может быть, значение действительно имеет нулевое значение при первом привязке .... – gregkalapos
Нет, нет кости :(, я попытался указать режим привязки: ' ' Все еще NPE. Спасибо в любом случае :) –
вы действительно уверены в этом? Очень правдоподобно, что с «Mode = OneWay» с или без него он будет первым, но без него он никогда не изменится. Итак, поскольку у вас нет нулевой проверки в вашем конвертере, ваша программа, вероятно, никогда не приходит к делу, что на самом деле _is_ значение присутствует ?! –