Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Maros2470
Člen
Avatar
Maros2470:2.12.2016 15:06

Zdravím.
Pracuji v C# wpf MVVM EF6.
Uložil jsem obrázek do databáze:

public byte[] binaryImage;

        public void SaveImage()
        {
            OpenFileDialog fd = new OpenFileDialog();
            if (fd.ShowDialog() == true)
            {
                Stream stream = File.OpenRead(fd.FileName);
                binaryImage = new byte[stream.Length];
                stream.Read(binaryImage, 0, (int)stream.Length);

                ImageTab img = new ImageTab();
                img.Image = binaryImage;
                ImageTabs.Add(img);
                Save();
            }

Problém je v tom, že si nevím rady s načtením obrázku z databáze a nabidování Image v XAML.

Můžete mi někdo poradit?
Díky.

 
Odpovědět
2.12.2016 15:06
Avatar
Odpovídá na Maros2470
Marian Benčat:2.12.2016 15:10

ve WPF <image> muzes nabindovat normalne byte[] array. On tam má value convertor. Takze si proste z db dostan opet byte pole a to nabinduj.

Nahoru Odpovědět
2.12.2016 15:10
Totalitní admini..
Avatar
Maros2470
Člen
Avatar
Odpovídá na Marian Benčat
Maros2470:2.12.2016 15:34

Celé to mám takto, ale obrázek nenačtu. V databázi je uložen.

public byte[] binaryImage;

        public void SaveImage()
        {
            OpenFileDialog fd = new OpenFileDialog();
            if (fd.ShowDialog() == true)
            {
                Stream stream = File.OpenRead(fd.FileName);
                binaryImage = new byte[stream.Length];
                stream.Read(binaryImage, 0, (int)stream.Length);

                ImageTab img = new ImageTab();
                img.Image = binaryImage;
                ImageTabs.Add(img);
                Save();
            }
        }

        public void LoadImage()
        {
            var img = ImageTabs.Select(x => x.Image).FirstOrDefault();
            binaryImage = img;
        }
<Grid Name="mainGrid">
        <Grid.DataContext>
            <vm:ImageViewModel/>
        </Grid.DataContext>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Horizontal">
            <Button Command="{Binding Path=SaveCommand}" Name="btnLoad" Content="Načti"/>
            <Button Command="{Binding Path=Preview}" Name="bntPreview" Content="Zobraz"/>
        </StackPanel>
        <Image Grid.Row="1" Name="ILogo" Source="{Binding binaryImage}"/>
    </Grid>
 
Nahoru Odpovědět
2.12.2016 15:34
Avatar
Marian Benčat:2.12.2016 17:25

Binding funguje POUZE na property.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
2.12.2016 17:25
Totalitní admini..
Avatar
Maros2470
Člen
Avatar
Odpovídá na Marian Benčat
Maros2470:2.12.2016 18:22

Díky. Jede to.

 
Nahoru Odpovědět
2.12.2016 18:22
Avatar
Feyse
Člen
Avatar
Odpovídá na Marian Benčat
Feyse:28.4.2018 20:50

@Martin Benčat mohl by si prosím trochu více specifikovat odpověď? Máme vesměs stejný problém - obrázek se nenačte z databáze ani nedostaneme žádnou chybu ani warning.

Předem moc díky.

 
Nahoru Odpovědět
28.4.2018 20:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.