WPF متعددة رئيسي / تفاصيل، نفس الشبكة
-
05-07-2019 - |
سؤال
ولدي TreeView
التي لديها ثلاثة مستويات.
ويتيح أقول لها الدوري والانقسام وفريق TreeView
.
والآن، عندما حدد كل من العناصر الموجودة في شجرة، وأود أن الاطلاع على معلومات مفصلة حول هذا الموضوع.
وماذا يكون أفضل طريقة لتحقيق ذلك؟
ومنذ Grid
لا وحدات (مثل ListBox
)، لا أستطيع مجرد مجموعة ItemsSource
وجعل DataTemplate
...
وفكرت باستخدام ListBox
والتي سوف تحتوي فقط على العنصر المحدد ولكن يبدو أن هذا سيء للغاية ...
وشكرا.
المحلول
وعليك أولا تحديد 3 DataTemplate
s عن الدوري والانقسام وفريق الفصول الدراسية. بعد، يمكنك ربط TreeView
إلى جذر الأشياء الخاصة بك. يجب أن يكون لديك فصول الجامعة وقسم خاصية الأطفال وترجع الأطفال. يجب أن يكون كل ما تبذلونه من الطبقات خاصية الاسم.
وبعد ذلك عندما كنت تريد أن تظهر كائن واحد، استخدم ContentPresenter
، وربط مضمونها إلى SelectedItem
إذا كان TreeView
.
وعلى سبيل المثال:
<StackPanel>
<StackPanel.Resources>
<DataTemplate DataType="{x:Type your_namespace:League}">
<StackPanel Orientation="Vertical">
<TextBlock Text={Binding Name}/>
<.../>
<StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type your_namespace:Division}">
<StackPanel Orientation="Vertical">
<TextBlock Text={Binding Name}/>
<.../>
<StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type your_namespace:Team}">
<StackPanel Orientation="Vertical">
<TextBlock Text={Binding Name}/>
<.../>
<StackPanel>
</DataTemplate>
</StackPanel.Resources>
<TreeView x:Name="_tree" ItemsSource="{Binding RootOfYourItems}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text={Binding Name}/>
</HierarchicalDataTemplate>
</TreeView>
<ContentPresenter Content="{Binding Path=SelectedItem, ElementName=_tree}" />
</StackPanel>
وكان يتم اختبار هذا الرمز أو تجميع، أنها قدمت فقط كمثال على ذلك.
نصائح أخرى
وأود أن إنشاء viewmodel مع خصائص متطوره شجرة، واختيار الحالية والتفاصيل إلى التحديد الحالي.
ووالبنية الشجرة هي في اتجاه واحد منضمة إلى تريفيف، وSelectedItem من تريفيف هو OneWayToSource منضمة إلى خاصية التحديد الحالي (بسبب القيود المفروضة على الملكية). تغيير هذه الخاصية قائمة من العناصر التابعة مرة التغييرات التحديد الحالي، ولا بد من أن العناصر التابعة لمربع القائمة عرضها.