Как установить изображение по умолчанию? - PullRequest
0 голосов
/ 22 мая 2011

DataGrid:

<sdk:DataGridTemplateColumn>
                        <sdk:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Image Tag="{Binding photo}" MinWidth="50"  Source="{Binding photo, Converter={StaticResource ConvertNullImageKey}}"/>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellTemplate>
                    </sdk:DataGridTemplateColumn>

Конвертер, если значение не URI, вернуть iamge из ImageResource.noimage. Но это растровое изображение ... Как вернуть URI на растровое изображение?

public class ConvertNullImage : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                try
                {
                    Uri uri = new Uri(value.ToString(), UriKind.Relative);
                    return uri;
                }
                catch { return new Uri(ImageResource.noimage); }
            }

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

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Свойство Image.Source не относится к типу Uri, оно относится к типу ImageSource, см. MSDN:

http://msdn.microsoft.com/en-us/library/system.windows.controls.image.source%28VS.95%29.aspx

При установке Image.Source вXAML, синтаксический анализатор XAML хитро преобразует ваш URI в ImageSource.

Итак, вам нужно создать BitmapImage в преобразователе значений.См. Этот связанный вопрос:

Image UriSource и привязка данных

0 голосов
/ 23 мая 2011

Свойство Source Image ожидает ImageSource, а не URI. Это работает в xaml благодаря TypeConverter . Вы можете создать BitmapImage из пути и вернуть его, как показано здесь .

Если я правильно понимаю, вторая часть проблемы заключается в том, что вы хотите привязать (в качестве значения по умолчанию) к изображению из файла ресурсов. Если это так, вот статья о том, как это сделать на MSDN

надеюсь, это поможет:)

...