vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Image/Bilder Browser - welches Steuerelement? 
Autor: Maas
Datum: 26.04.11 19:00

Das geht auch in WPF sehr gut und relativ einfach:

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1"
    Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <local:DirectoryToImagesConverter _
          x:Key="Dir2ImgConv"></local:DirectoryToImagesConverter>
    </Window.Resources>
    <Grid>
        <ListBox ItemsSource="{Binding SelectedItem, ElementName=trvFiles,
                               Converter={StaticResource Dir2ImgConv}}" 
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
                 Margin="219,12,12,12" 
                 Name="lstThumbnails">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding}" 
                           Width="70" 
                           Height="70" 
                           Margin="20,20"></Image>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel IsItemsHost="True" 
                               Orientation="Horizontal">
 
                    </WrapPanel>
                </ItemsPanelTemplate>
 
            </ListBox.ItemsPanel>
        </ListBox>
 
        <TreeView Margin="12,12,0,12" 
                  HorizontalAlignment="Left" 
                  Width="201" 
                  Name="trvFiles">
 
        </TreeView>
    </Grid>
</Window>
Class MainWindow
 
    Private Sub Window_Loaded(sender As System.Object, e As _
      System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        For Each drv In My.Computer.FileSystem.Drives
            Dim dir As New IO.DirectoryInfo(drv.Name)
            Dim trv As New TreeViewItem()
            trv.Header = dir.Name
            trv.DataContext = dir
            Me.FillTreeViewItem(trv, dir)
            trvFiles.Items.Add(trv)
        Next
    End Sub
 
    Private Sub trvFiles_SelectedItemChanged(sender As System.Object, e As _
      System.Windows.RoutedPropertyChangedEventArgs(Of System.Object)) Handles _
      trvFiles.SelectedItemChanged
        If e.NewValue IsNot Nothing AndAlso TypeOf e.NewValue Is TreeViewItem _
        Then
            Dim trv = CType(e.NewValue, TreeViewItem)
            If trv.Items.Count = 0 AndAlso _
               trv.DataContext IsNot Nothing AndAlso TypeOf trv.DataContext Is _
               IO.DirectoryInfo Then
                Dim dir = CType(trv.DataContext, IO.DirectoryInfo)
                Me.FillTreeViewItem(trv, dir)
            End If
        End If
    End Sub
 
    Private Sub FillTreeViewItem(trv As TreeViewItem, dir As IO.DirectoryInfo)
        Try
            For Each d In dir.GetDirectories
                trv.Items.Add(New TreeViewItem With {.Header = d.Name, _
                  .DataContext = d})
            Next
            For Each f In dir.GetFiles
                trv.Items.Add(New TreeViewItem With {.Header = f.Name, _
                  .DataContext = f})
            Next
        Catch ex As IO.IOException
            Debug.WriteLine("Cannot read: " & dir.FullName)
        End Try
    End Sub
 
End Class
 
Public Class DirectoryToImagesConverter
    Implements IValueConverter
 
    Public Function Convert(value As Object, targetType As System.Type, _
      parameter As Object, culture As System.Globalization.CultureInfo) As _
      Object Implements System.Windows.Data.IValueConverter.Convert
        If value IsNot Nothing AndAlso TypeOf value Is TreeViewItem Then
            Dim trv = CType(value, TreeViewItem)
            If trv.DataContext IsNot Nothing AndAlso TypeOf trv.DataContext Is _
              IO.DirectoryInfo Then
                Dim dir = CType(trv.DataContext, IO.DirectoryInfo)
                Dim lst As New List(Of ImageSource)
                For Each file In dir.GetFiles("*.jpg")
                    lst.Add(New BitmapImage(New Uri(file.FullName, _
                      UriKind.Absolute)))
                Next
                Return lst.ToArray
            Else
                Return Nothing
            End If
        Else
            Return Nothing
        End If
 
    End Function
 
    Public Function ConvertBack(value As Object, targetType As System.Type, _
      parameter As Object, culture As System.Globalization.CultureInfo) As _
      Object Implements System.Windows.Data.IValueConverter.ConvertBack
        Throw New NotSupportedException
    End Function
End Class
Maas
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Image/Bilder Browser - welches Steuerelement?1.167Magier25.04.11 17:10
Re: Image/Bilder Browser - welches Steuerelement?804Manfred X25.04.11 18:49
Re: Image/Bilder Browser - welches Steuerelement?756Magier26.04.11 01:19
Re: Image/Bilder Browser - welches Steuerelement?802Maas26.04.11 19:00

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel