我有以下转换器:用x绑定到与转换器电流的DataContext:绑定
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
传递给我的转换器。
注意,x的默认模式:绑定是一次性(绑定默认为单向)。这可能是根本原因吗?也许这个值在第一个绑定时真的是空的...... – gregkalapos
不,没有骰子:(我试着指定绑定模式: ' ' 仍NPE。无论如何感谢:) –
你真的确定吗?无论是否使用“Mode = OneWay”,它都会首先为空 - 但如果没有它,它永远不会改变。所以既然你没有在你的转换器中有一个空检查,你的程序可能永远不会出现这样的情况,即实际上存在一个值?! –