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

Avatar
František Pastorek:

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. května 21:47
Avatar
Odpovídá na František Pastorek
Ondřej Štorc:

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. května 23:32
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
František Pastorek:

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

 
Nahoru Odpovědět 28. května 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.