将源设置为ValueConverter时图像不可见

时间:2014-01-08 12:01:34

标签: c# silverlight windows-phone-8 windows-phone valueconverter

我正在尝试根据LongListSelector的DataContext的布尔属性更改LongListSelector中的Image。我正在使用ValueConverter来实现这一点,代码确实到达ValueConverter并返回一个BitmapImage,但这在屏幕上不可见。以下是一些相关代码:

XAML代码(ItemTemplate和ValueConverter声明):

<local:BoolToImage x:Key="BoolImageConverter"/>

DataTemplate x:Key="itemTemplate">
        <Grid Margin="0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>

            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Foreground="Black" Margin="0" FontFamily="Segoe WP Light" FontSize="29.333" VerticalAlignment="Center" Text="{Binding BeginTijdTimeOnly}" />
            <TextBlock Grid.Column="1" TextWrapping="Wrap" Foreground="Black" Margin="0" FontFamily="/LimburgsLeed;component/Fonts/Fonts.zip#Champion" FontSize="48" VerticalAlignment="Center" Text="{Binding Artiest.Naam}" />
            <Image x:Name="image" Grid.Column="2" Source="{Binding Path=isSaved, Converter={StaticResource BoolImageConverter}}" VerticalAlignment="Center" Margin="0, 0, -1, 0" MouseLeftButtonDown="fav_Click"/>
        </Grid>
    </DataTemplate>

如您所见,Image绑定到ValueConverter和isSaved属性。

ValueConverter代码:

public class BoolToImage : IValueConverter
{
    public BitmapImage TrueImage = new BitmapImage();
    public BitmapImage FalseImage = new BitmapImage();

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        TrueImage.UriSource = new Uri("/Images/ThumbSelected@2x.png", UriKind.RelativeOrAbsolute);
        FalseImage.UriSource = new Uri("/Images/thumb.png", UriKind.RelativeOrAbsolute);

        if (!(value is bool))
        {
            return this.FalseImage;
        }

        bool b = (bool)value;
        if (b)
        {
            return this.TrueImage;
        }
        else
        {
            return this.FalseImage;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

我不清楚为什么图像没有显示.. ValueConverter不能返回null。

1 个答案:

答案 0 :(得分:1)

我的上帝,我现在肯定感到愚蠢。这一切都很好,但我将Image文件的Build Action设置为Embedded Resource。将其更改为内容解决了问题。