值转换器不被称为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的一个实例)。

值转换器不被称为XAML

事实证明这与转换器完全无关。该值是在图像加载之前绑定的(因此源为空)。为了将来的参考检查,以确保您在视图模型中正确地实现INotifyPropertyChanged