Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

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

C# .NET .NET (C# a Visual Basic) ListBox binding - každý znak na novom riadku American English version English version

Aktivity (1)
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
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í
+1 bodů
Ř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.