Я использую xml как источник моего приложения через привязку. в xml есть список папок и путь для образца изображения для каждой папки. Список папок привязан к списку, а другой экран привязан к выбранному элементу списка, который является элементом списка xml (тип XmlNode). Я добавил оперативность для добавления и удаления элементов с помощью XmlDocument, который был скопирован из xml XmlProvider и сохранил его в исходном файле.Конвертер привязки изображения Imagebrush image
Проблема начинается, когда исходный список пуст, либо на время загрузки приложения, либо после удаления всех элементов. в этот момент все привязанные значения дисплея равны нулю. Я решил все привязки с свойством TargetNullValue привязки, за исключением свойства image image_source изображения canvas, которое ничего не показывает.
Я попытался использовать конвертер, но когда я его отладил, я увидел что-то странное. если в списке были элементы, конвертер вернул то, что нужно, и изображение было отображено, но если список пуст, конвертер вернул то, что ему нужно, и изображение не было показано! PLZ помогите мне.
Код:
XML:
<Folders>
<Folder Id="1">
<Path>folder3\1</Path>
<SampleImage>C:\images\2011-09-22\site3\1\6.jpg</SampleImage>
</Folder>
</Folders>
XAML:
<Canvas.Background>
<ImageBrush x:Name="SampleImage" Stretch="Uniform" >
<ImageBrush.ImageSource>
<MultiBinding Converter="{StaticResource ImageConverter}" Mode="OneWay">
<Binding XPath="./SampleImage" />
<Binding Source="C:\images\SampleImages\no_image.jpg"/>
</MultiBinding>
</ImageBrush.ImageSource>
</ImageBrush>
</Canvas.Background>
C#:
public class ImageConverter : IMultiValueConverter
{
public object Convert(object[] value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
ImageSourceConverter imageConverter = new ImageSourceConverter();
bool bool1=value[0].Equals(DependencyProperty.UnsetValue);
if (value[0] != null &&!bool1) //if the source isn't null
{
//this works fine
return imageConverter.ConvertFromString(value[0].ToString());
}
//here the converter returns the right object but the alternate image isn't shown and the background left blank
return imageConverter.ConvertFromString(value[1].ToString());
//here too the converter returns the right object but the alternate image isn't shown and the background left blank
//return imageConverter.ConvertFromString(@"C:\images\SampleImages\no_image.jpg");
}
public object[] ConvertBack(object value, Type[] targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
Это, вероятно, слишком очевидно, но * C: \ images \ SampleImages \ no_image.jpg * на самом деле это правильно? И это не просто пустой образ? –
Изображение есть. если я поместил этот путь в образ Образца в XML, изображение будет показано как должно. – Seffix