למה לא להביא xaml?
חשוב לדעת איפה אתה אוחז.
א. יש הרבה הרבה אפשרויות להציג מידע בפקדי xaml.
ב. יש הרבה אפשרויות איך לנהל את הקוד מאחורה.
ג. לליסטויו יש אפשרויות תצוגה טבלאית ואחרות.
עשיתי דוגמה בסיסית עם פירוט רב כדי שתראה את היקף ההיבטים.
קודם הXAML:
<ListView ItemsSource="{Binding Source={StaticResource CollForList}}" MouseDoubleClick="listFiles_MouseDoubleClick" >
<ListView.View>
<GridView>
<GridViewColumn >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding icon}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="שם" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="תאריך שינוי" DisplayMemberBinding="{Binding DateChange}" />
</GridView>
</ListView.View>
</ListView>
הזאמל הזה עושה שימוש בריסורס, אביא אף אותו
<Window.Resources>
<CollectionViewSource x:Key="CollForList" />
</Window.Resources>
הקוד VB במקרה זה:
Private Coll As CollectionViewSource
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
Coll = Me.Resources("CollForList")
ListBuilder(New IO.DirectoryInfo("c:\"))
End Sub
Private Sub ListBuilder(dirBase As IO.DirectoryInfo)
Dim files = From file In dirBase.EnumerateFiles()
Select New FileOrFolder(file)
Dim directories = From dir In dirBase.EnumerateDirectories
Select New FileOrFolder(dir)
Coll.Source = files.Concat(directories)
End Sub
Private Sub listFiles_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs)
Dim f = TryCast(CType(e.OriginalSource, FrameworkElement).DataContext, FileOrFolder)
If f IsNot Nothing Then
If f.IsDir Then
ListBuilder(New IO.DirectoryInfo(f.FullName))
End If
End If
End Sub
הקוד משתמש במחלקה זאת:
Class FileOrFolder
Public FullName As String
Public Property IsDir As Boolean
Public Property Name As String
Public Property DateChange As Date
Public Property Image As ImageSource
Public Sub New(file As IO.FileInfo)
FullName = file.FullName
Name = file.Name
'....
End Sub
Public Sub New(dir As IO.DirectoryInfo)
IsDir = True
FullName = dir.FullName
Name = dir.Name
'....
End Sub
End Class
תשלים את הקוד החסר (איפה שיש שלוש נקודות) לפי טעמך.
יש כאן הרבה "הנחות עבודה". כל דבר שעשיתי אפשר אחרת.
אבל זה מבט מהיר לאיך שWPF מתמודד עם נתונים.
פורסם במקור בפורום CODE613 ב17/10/2013 13:05 (+03:00)