Я использую 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";
Может пожалуйста, уточните свой вопрос? Я не уверен, что понимаю, что такое ваш сценарий? –