IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: ListBox binding - každý znak na novom riadku

Aktivity
Avatar
František Pastorek:27.5.2016 21:47

Vypíše každý znak stringu na nový riadok a iba jeden string, napriek tomu, že v liste sú dve referencie na inštancie triedy ImageDetails. Výsledok je na obrázku.

ImageDetails - trieda, do ktorej ukladám informácie o obrázku

class ImageDetails {

        public string Name { get; set; }

        public string Description { get; set; }

        public string Path { get; set; }

        public string FileName { get; set; }

        public string Extension { get; set; }

        public int Height { get; set; }

        public int Width { get; set; }

        public long Size { get; set; }
    }

private void select_Click - metóda je v hlavnej triede

private void select_Click(Object sender, RoutedEventArgs e) {
            FolderBrowserDialog FBD = new FolderBrowserDialog();
            FBD.ShowDialog();
            path = FBD.SelectedPath;
            selectedFolder.Text = path;

            string root = path;
            string[] supportedExtensions = new[] { ".jpeg", ".jpg", ".png" };
            var files = Directory.GetFiles(System.IO.Path.Combine(root), "*.*").Where(s => supportedExtensions.Contains(System.IO.Path.GetExtension(s).ToLower()));

            List<ImageDetails> images = new List<ImageDetails>();
            foreach (var file in files) {
                ImageDetails id = new ImageDetails() {
                    Path = file,
                    FileName = System.IO.Path.GetFileName(file),
                    Extension = System.IO.Path.GetExtension(file)
                };

                BitmapImage img = new BitmapImage();
                img.BeginInit();
                img.CacheOption = BitmapCacheOption.OnLoad;
                img.UriSource = new Uri(file, UriKind.Absolute);
                img.EndInit();
                id.Width = img.PixelWidth;
                id.Height = img.PixelHeight;

                FileInfo fi = new FileInfo(file);
                id.Size = fi.Length;
                images.Add(id);
            }

            ImageList.DataContext = images;
        }

XAML controlleru ListBox

<ListBox x:Name="ImageList" Margin="10" Grid.Row="2" ItemsSource="{Binding Path}" Grid.RowSpan="2" Grid.Column="0" Grid.ColumnSpan="2" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Visible"/>
 
Odpovědět
27.5.2016 21:47
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na František Pastorek
Ondřej Štorc:27.5.2016 23:32

Protože ty mu tím říkáš, že má brát jako kolekci pro data do listu ten string s cestou. Měl by jsi spíš zeditovat templatu pro jednotlivé itemy

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
27.5.2016 23:32
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
František Pastorek:28.5.2016 19:06

Dík, už som aj lepšie pochopil tomu, ako binding funguje :) Ďakujem

 
Nahoru Odpovědět
28.5.2016 19:06
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 3 zpráv z 3.