سؤال

ولدي TreeView التي لديها ثلاثة مستويات.

ويتيح أقول لها الدوري والانقسام وفريق TreeView.

والآن، عندما حدد كل من العناصر الموجودة في شجرة، وأود أن الاطلاع على معلومات مفصلة حول هذا الموضوع.

وماذا يكون أفضل طريقة لتحقيق ذلك؟

ومنذ Grid لا وحدات (مثل ListBox)، لا أستطيع مجرد مجموعة ItemsSource وجعل DataTemplate ...

وفكرت باستخدام ListBox والتي سوف تحتوي فقط على العنصر المحدد ولكن يبدو أن هذا سيء للغاية ...

وشكرا.

هل كانت مفيدة؟

المحلول

وعليك أولا تحديد 3 DataTemplates عن الدوري والانقسام وفريق الفصول الدراسية. بعد، يمكنك ربط 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 منضمة إلى خاصية التحديد الحالي (بسبب القيود المفروضة على الملكية). تغيير هذه الخاصية قائمة من العناصر التابعة مرة التغييرات التحديد الحالي، ولا بد من أن العناصر التابعة لمربع القائمة عرضها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top