سؤال
أريد ربط TreeView بفصل مثل هذا:
public class Folder : Base_FileFolder
{
public Folder()
{
Folders = new ObservableCollection<Folder>();
Files = new ObservableCollection<File>();
}
public ObservableCollection<Folder> Folders { get; set; }
public ObservableCollection<File> Files { get; set; }
}
الفصول الأخرى آريس:
public class File : Base_FileFolder
{
}
public class Base_FileFolder : DependencyObject
{
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Base_FileFolder), new UIPropertyMetadata(""));
}
كيف يمكنني إنشاء مجموعة TreeView التي تعرض مجموعة الملفات والمجلدات
أريد استخدام شيء مثل هذا:
<HierarchicalDataTemplate
DataType="{x:Type model:Folder}"
ItemsSource="{Binding Childs}">
<DockPanel>
<Label Content="{Binding Name}"/> </DockPanel>
</HierarchicalDataTemplate>
لذلك أحصل على شيء مثل هذا:
المجلد الرئيسي
|
|-File
|-File
|-Folder
|-File
|-File
|-Folder
|-File
المحلول
ما هو بالضبط سؤالك؟ كيف تجمعهم؟ CompositeCollection
.
تحرير: كما ذكر في التعليقات intuipic يقوم التطبيق بشيء مشابه لما تطلبه. هذه لقطة شاشة:
نصائح أخرى
هذا سهل للغاية ، مع الأخذ في الاعتبار كوكبة الخاص بك.
أولاً: اضبط الفصول الدراسية. لا تحتاج إلى قائمتين منفصلتين للملفات والمجلدات في فئة المجلدات. فقط استخدم واحدة IList<Base_FileFolder>
داخل فئة base_filefolder (OOP جيد) ودعوها الأطفال!
ثم ستحتاج فقط خطوتين أخريين:
اثنين من الهرميات
<HierarchicalDataTemplate DataType="{x:Type FolderNode}" ItemsSource="{Binding Path=Children}"> <Grid> <TextBlock Text="{Binding FolderName}" /> </Grid> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="{x:Type FileNode}" ItemsSource="{Binding Path=Children}"> <Grid> <TextBlock Text="{Binding FileName}" /> </Grid> </HierarchicalDataTemplate>
و treeview مثل هذا
<TreeView Name="TreeViewFileTree" ItemsSource="{rootFolder.Children}" />
هذا هو. قوة WPF هي بساطتها.
تحتاج إلى استخدام ستحتاج إلى 3 أشياء:
- A HierarchicalDatateMplate ، كما لديك ، للقيام بالأمهات+الأطفال ، وقالب المجلدات. قد تكون قادرًا على استخدام CompositEcollection هنا لدمج ملفات المجلدات+، لكنني لست متأكدًا من ذلك ... قد تضطر إلى إضافة خاصية أخرى إلى فئة المجلد التي تُرجع اتحاد الملفات والمجلدات وتسميتها " الأطفال "أو أيا كان ...
- datatemplate إلى الملفات في الشجرة
- Templateselector لإخبار الشجرة بالتبديل بين القوالب اعتمادًا على العنصر في الشجرة. بدلاً من إعداد عنصر itemTemplate على الشجرة ، قم بتعيين itemTemplateSelector على هذا.
لا تنتمي إلى StackOverflow