Я пытаюсь создать приложение WPF с несколькими небольшими редакторами.Один из этих редакторов требует загрузить два изображения, ввести имя в TextBox и нажать кнопку «Сохранить».
В коде это работает безупречно.Файлы сохраняются в модели, и изображение может быть загружено.Перед нажатием кнопки сохранения оба изображения фактически отображаются в редакторе.Однако после повторного открытия (для редактирования) отображается только одно изображение.
Я немного протестировал и обнаружил, что всегда первое изображение не обрабатывается, а второе -.
Например,в XAML это выглядит так:
<Image Name="BackgroundImage" Grid.Row="1" Grid.Column="0" Source="{Binding Path=Background}" Width="120" Height="90"/>
<Image Name="ForegroundImage" Grid.Row="2" Grid.Column="0" Source="{Binding Path=Foreground}" Width="120" Height="90"/>
Здесь BackgroundImage не отображается, даже если свойство Background модели успешно загрузило изображение,Если бы я поменял эти теги XAML, то есть поместил элемент управления ForegroundImage над BackgroundImage , тогда ForegroundImage не будет отображаться, пока BackgroundImage делаетДаже если я не изменю что-либо еще, например Grid.Row или Column.
Затем я попытался загрузить изображения из кода в обработчик событий Loaded окна:
private void LocationEditor_OnLoaded(object sender, RoutedEventArgs e)
{
BackgroundImage.Source = ((Location)DataContext).Background;
ForegroundImage.Source = ((Location)DataContext).Foreground;
}
То же самое относится и к этой ситуации.Какая бы строка ни выполнялась первой, она не будет отображаться в окне.
В случае, если это поможет, вот код свойства Background ( Foreground isпостроено так же):
[JsonIgnore]
public BitmapImage Background
{
get
{
if (!string.IsNullOrWhiteSpace(BackgroundFile))
{
SetFree();
SetImage();
}
else
_background = null;
return _background;
}
}
Метод SetFree () освобождает ресурсы памяти, если изображение больше не нужно.Это происходит, когда окно закрывается или когда требуется BitmapImage .(Он будет перезагружать изображение каждый раз, когда файл изображения изменился.)
Метод SetImage () выполняет одну простую вещь: загрузка изображения BackgroundFile файл изображения и сохраняет его в поле _background .
Я не совсем понимаю, в чем может быть проблема.Я попробовал несколько вещей, но я не часто работаю с изображениями во время кодирования.