سؤال

أنا مرتبك تمامًا من هذه المصطلحات الثلاثة ، متى أستخدم أيها؟ ما هي العلاقة وهم أطفال من أي ضوابط؟

هل من الصحيح القول أن هذه هي الشجرة:

itemscontrol> heatspresenter> headspanel

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

المحلول

ItemsControl هو من الناحية المفاهيمية تحكم يضم العناصر. حاول ببساطة التفكير في هذا التحكم كحامل للكائنات الصفر أو أكثر.

ItemsPresenter هو أكثر صرامة لشرح ، ولكن هذا جزء من ItemsControl قالب سيحدد مكان وضع العناصر داخله. يمكن أن يكون قالب العناصر الخاصة بك Control أي شيء تريده ، قل شبكة مع بعض الصور الجميلة حوله ، داخل هذا القالب ، ستضع ItemsPresenter في أي مكان تريد أن تكون فيه أغراضك ، قل في منتصف شبكتك. (هذا المثال مأخوذ من MSDN وتبسيط لسهولة القراءة)

<Style TargetType="HeaderedItemsControl">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type HeaderedItemsControl}">
          <Grid>
            <Rectangle Stroke="Black" Fill="Red"/>
            <ItemsPresenter Margin="2,0,0,0"/>
          </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

ال ItemsPanel هي اللوحة (أو الحاوية) التي تتحكم في تخطيط العناصر الموجودة في العناصر الخاصة بك. لذا ، إذا كنت تريد عرض العناصر التي قمت بإضافتها إلى العناصر الخاصة بك بعرض Control بطريقة أفقية ، فيمكن أن تكون لوحة العناصر الخاصة بـ StackPanel مع تعيين خاصية التوجيه الخاصة بها إلى أفقي.

كل هذا منطقي؟

نصائح أخرى

أعتقد أن هذا يفسر إلى حد كبير كيف يتم تنفيذ الأشياء بواسطة Silverlight: exampaneltemplate فئة:يحدد اللوحة التي ينشئها عناصر العناصر الخاصة بتخطيط عناصر العناصر. heatspaneltemplate فئة

 <Style TargetType="local:myItemsControl">
     <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </Setter.Value>
     </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:myItemsControl">
              ....
               <ItemsPresenter />
              ....

في الأساس ، سيتم استبدال العنصر (المحدد في القالب) بأي شيء محدد في heatspaneltemplate.

لذلك ، يمكن تمديد القالب ليشمل رأسًا وسيتم وضع جميع الأطفال تحت هذا الرأس:

<Grid> <TextBlock Text="Header"/>   <ItemsPresenter /> </Grid>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top