У меня есть окно:Все изображения в XPS выглядят одинаково при загрузке из массива байтов
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="150" Height="100"
MouseLeftButtonDown="OnClick">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Image1}" />
<Image Source="{Binding Image2}" />
</StackPanel>
</Window>
отделенного кода:
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
DataContext = new
{
Image1 = Convert.FromBase64String("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAKhJREFUWIXtltEJgzAURU+l7Qg6S+kiHaOLdBL9EgKlEzhTUrA/fkgM+Ah5FeUdCAmSvHvUEAKGsaQBHOCBsVALU81GIuAKBsfNxWGnhIAHLhLTDAJwXRMYlcKTmZVy2CrnzHUvYIie3YHnvwQGoCtRa7e/oJ2NUxtZzOZfwARMwARMIPcknPOY+lvOYrsPpAS+inlBIvBRFHhLJmlcyz3QA3WxVzEOww83D06TNQuS8AAAAABJRU5ErkJggg=="),
Image2 = Convert.FromBase64String("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAPFJREFUWIXtlksKwjAURY9iBQcORLArcOAanLsChQ7dggtwU0JBBKduxIF7aAt1YJy0iUnz8UcuPGhKbt55r2kIREW1lQI5UAC1pyjFmqkJQO4xcTPyZrKeBKAAEhNSC5XAUAdQB0ouzdkPnEyrgYVno1hnBWyRd7WTdBvplfaOfmeAyTsAZLG2LeAnNyHADbgAlRhf/eA8pGvhERgpvAsDvzPAXOEbA+euADYn4dOzBHbiORHjqcarytkCMKkgM5j7/X+ByydQqZP/4x2wOQcynwDxPiADqCTvfKk0ATgFBDiaTApxLS+AAzDzVkrU3+gOjt+/W2ggWToAAAAASUVORK5CYII="),
};
}
private void OnClick(object sender, MouseButtonEventArgs e)
{
using (var xps = new XpsDocument(@"1.xps", FileAccess.Write))
XpsDocument.CreateXpsDocumentWriter(xps).Write((Visual)this.Content);
}
}
Как вы можете видеть, он отображает два изображения и записывается XPS-файл при щелчке мыши.
Это то, что я вижу на экране:
Это то, что я получаю в XPS:
Таким образом, первое изображение отображается вместо второго один. На самом деле, если у меня есть несколько изображений, все они заменяются первым в полученном XPS.
Однако, если вместо byte[]
Я установил источник изображения в URL-адрес файла, тогда XPS правильно отобразит все изображения.
Что происходит?
Это не может быть ошибкой в ImageSourceConverter. Я могу успешно привязать два элемента управления Image к двум различным свойствам 'byte []' изображения в модели представления (без какого-либо явного преобразования). В вашем приложении должно быть что-то еще. – Clemens
Это не «мое приложение». Минимальный код из вопроса воспроизводит ошибку, попробуйте сами. – torvin
Я сделал это уже с двумя элементами управления изображением, связанными с двумя свойствами модели представления типа 'byte []'. Эта настройка использует неявное преобразование, предоставляемое классом ImageSourceConverter. Нет ошибки, хотя ... – Clemens