سؤال

لWPF تخطيط / سيلفرلايت، هل هو أفضل لاستخدام الشبكة مع الكثير من الصفوف والأعمدة، أو طن من Stackpanels؟

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

المحلول

ويجب عليك استخدام الشبكة إذا كنت بحاجة إلى أشياء ليصطف أفقيا وعموديا. استخدام StackPanel لإنشاء صف أو عمود من الأشياء عندما تكون هذه الأمور لا تحتاج إلى يصطف مع أي شيء آخر.

ومع ذلك، لا تحد نفسك لهذين الخيارين. على وجه الخصوص، لديها نظرة على DockPanel. انها أكثر تعقيدا نوعا ما من StackPanel، ولكن العلامات التي لا تشوش مثل الشبكة. هنا مقالة جيدة على DockPanel:

<وأ href = "http://web.archive.org/web/20131115062922/http://www.silverlightshow.net/items/Using-the-DockPanel-in-Silverlight-2.aspx" يختلط = "نوفولو noreferrer"> استخدام DockPanel في Silverlight 2

نصائح أخرى

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

وأعتقد أن الشبكة هي فكرة أفضل. أنا عادة إعداد المخطط العام مع الشبكة واستخدام عدد قليل stackpanels هنا وهناك للقيام ببعض أشياء محددة. ولدي أيضا الشعور بأن أداء أفضل مع شبكات وأن شبكات إعطاء عموما لك المزيد من المرونة.

وأنا لا أعتقد أن الشبكة هي فكرة أفضل.

وعلى سبيل المثال، إذا كنت ترغب في إدراج صف إلى وثيقة تخطيط الشبكة الموجودة (في الوسط)

وهناك exising الصف 1،2،3،4، ثم الشرط هو إدراج صف جديد بين 1 و 2.

وبعد ذلك كان لديك لتغيير 2،3،4 إلى 3،4،5 (تجد كل سمة تغيير ....)

والتفكير إذا صف واحد لديها 3 - 5 أعمدة ... انها مهمة قذرة لإعادة ترتيب كل الرقمية!

وأنا أفضل StackPanel لأنني أجد أنه من الأسهل لإجراء تغييرات عند إدخال عناصر جديدة، الصفوف أو الأعمدة. مع شبكة كنت بحاجة لقراءة أرقام الصفوف وأرقام العمود لمعرفة مكان وجودك. مع StackPanel لك ما عليك سوى اتباع التعشيش، وهذا هو أسهل وأقل فوضى من الشبكة.

وعلى سبيل المثال، في صفحة XAML، وأنا استخدم لوحة كومة الأفقية مثل شبكة الوالدين، ثم إذا كنت بحاجة إلى عمود، ولدي منفصلة stackpanel "العمودي" المتداخلة. بهذه الطريقة يصبح stackpanel أفقي على "الشبكة" ومتداخلة الرأسي في StackPanel تصبح الأعمدة. أجد هذا أسهل للقراءة وتعديل هذه الصفوف والأعمدة في الشبكة.

وكلاهما قوة (شبكة / Stackpanel). مشكلة مع الشبكة هي إعادة هيكلة خطوط. المشكلة مع Stackpanel هي أن (عرض الأعمدة الثابتة) أي بنية الجدول. لذلك أنا أعتقد أن هذا هو الحل الجيد في هذه المشاكل :-)

وأساليب تعريف

<Page.Resources>
    <Style x:Key="LabelCol1" TargetType="Label">
        <Setter Property="Width" Value="200" />
    </Style>
    <Style x:Key="EditCol2" TargetType="TextBox">
        <Setter Property="Width" Value="250" />
        <Setter Property="TextWrapping" Value="Wrap" />
        <Setter Property="Margin" Value="3" />
    </Style>
    <Style x:Key="ButtonCol3" TargetType="Button">
        <Setter Property="Width" Value="120" />
        <Setter Property="Margin" Value="3" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
    </Style>
</Page.Resources>

واستخدام الأنماط في Stackpanel

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Style="{StaticResource LabelCol1}" Content="Solution path"  />
        <TextBox Style="{StaticResource EditCol2}" />
        <Button Style="{StaticResource ButtonCol3}" Content="Open..." />
    </StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Style="{StaticResource LabelCol1}" Content="Solution name"  />
        <TextBox Style="{StaticResource EditCol2}" />
    </StackPanel>
</StackPanel>

وليست لدي خبرة مع مثل هذا التخطيط، ولكنني لن أراهن، أن الشبكة هي أسهل لتقديم بالمقارنة مع الكثير من stackpanels متداخلة.

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