2013-11-20 3 views
0

Я использую Binding до Image.SourceProperty от byte[]. В IValueConverter Я проверяю, value.Length > 0, если да, то я устанавливаю источник из его значения. Тогда мне нужно знать, если бы он был установлен, чтобы я мог показать или скрыть ясную кнопку. Image.Source всегда не равно нулю. Как узнать, если он был установлен из массива byte[]? Мой код:Проверьте, нет ли источника изображений

var bnd = new Binding 
{ 
    Mode = BindingMode.TwoWay, 
    Path = new PropertyPath("DataPath.Value"), 
    Converter = new ByteToImageConverter() 
}; 
myImage.SetBinding(Image.SourceProperty, bnd); 

public class ByteToImageConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     var val = value as byte[]; 
     var bmp = new BitmapImage(); 
     if (val.Length > 0) { 
      bmp.SetSource(new MemoryStream(val)); 
     } 
     return bmp; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value == null) { 
      return new byte[0]; 
     } 
     var ms = new MemoryStream(); 
     var bmp = new WriteableBitmap(value as BitmapSource); 
     bmp.SaveJpeg(ms, 150, 200, 0, 100); 
     return ms.ToArray(); 
    } 
} 

Теперь мне нужно код, чтобы проверить, если исходное изображение свойство установлено:

// myImage.Source always != null even if there was no bmp.SetSource() call 
var str = myImage.Source != null ? "Image is set" : "Image is empty"; 
+0

Может пожалуйста, уточните свой вопрос? Я не уверен, что понимаю, что такое ваш сценарий? –

ответ

0

что-то подобное

if (((BitmapImage)myImage.Source).UriSource == null) 
{ 
//Image is empty 
} 

или

var str = ((BitmapImage)myImage.Source).UriSource != null ? "Image is set" : "Image is empty"; 
Смежные вопросы