值转换器不被称为XAML
本文关键字:XAML 被称为 转换器 | 更新日期: 2023-09-27 18:07:52
我在Value Converter中放置了断点,它们从未被触发,但是页面呈现时没有显示任何图像。
XAML:xmlns:datatypes="clr-namespace:DataTypes_Portable;assembly=DataTypes_WinPhone8"
...
<phone:PhoneApplicationPage.Resources>
<datatypes:WinPhone8ImageConverter x:Key="ImageConverter" />
</phone:PhoneApplicationPage.Resources>
...
<Image x:Name="LevelImage" HorizontalAlignment="Left" Height="Auto" VerticalAlignment="Top" Width="Auto" Margin="0" Grid.ColumnSpan="5" Source="{Binding Converter={StaticResource ImageConverter}, Path=App.Main.Game.CurrentLevel.CurrentPart.Image}"/>
CS:
public class WinPhone8ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var imageProvider = value as WinPhone8ImageProvider;
return imageProvider.Image;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
从我所能理解的(通过试验和消除的过程,看看抛出了什么异常),问题来自于我试图绑定到值的XAML的一部分。
在断点处,App.Main.Game.CurrentLevel.CurrentPart.Image
的值被正确设置(即WinPhone8ImageProvider
的一个实例)。
事实证明这与转换器完全无关。该值是在图像加载之前绑定的(因此源为空)。为了将来的参考检查,以确保您在视图模型中正确地实现INotifyPropertyChanged
。