کنترل StackPanel

کنترل StackPanel، شباهت زیادی به WrapPanel دارد، با این تفاوت که در StackPanel خاصیت Wrap وجود ندارد. به عبارت دیگر، این پنل نیز به شما اجازه می‌دهد، تعدادی عنصر را پشت سر هم به صورت افقی یا عمودی (پیش فرض) قرار دهید و اگر نتواند این عناصر را در یک راستا قرار دهد، ادامه آن‌ها را به خط بعدی منتقل یا به اصطلاح Wrap نمی‌کند. به مثال زیر توجه کنید:

<StackPanel>
    <Button>Button 1</Button>
    <Button>Button 2</Button>
    <Button>Button 3</Button>
    <Button>Button 4</Button>
    <Button>Button 5</Button>
    <Button>Button 6</Button>
</StackPanel>

زمانی که این برنامه را اجرا کنیم خروجی زیر را نمایش می‌دهد:

همانطور که مشاهده می‌کنید StackPanel به اینکه که پنجره ما فضای کافی برای نمایش همه کنترل‌ها را ندارد اهمیتی نمی‌دهد و ادامه کنترل‌ها را به خط بعدی منتقل نمی‌کند. البته شما می‌توانید از کنترل ScrollViewer برای اسکرول کردن صفحه به منظور مشاهده ادامه عناصر موجود در StackPanel نیز استفاده کنید که این کنترل را در بخش‌های بعدی بررسی خواهیم کرد.
StackPanel به صورت پیش فرض عناصر را به شکل عمودی (Vertical) پشت سر هم قرار می‌دهد ولی شما می‌تواند با استفاده از خاصیت Orientation و مقدار Horizontal عناصر را به شکل افقی نیز پشت سر هم قرار دهید:

<StackPanel Orientation="Horizontal">

اگر مثال قبل را با این تغییر اجرا کنیم خروجی زیر را نشان می‌دهد:

همانطور که مشاهده می‌کنید عناصر را به صورت افقی پشت سر یک دیگر قرار می‌دهد. نکته دیگری که باید در مورد StackPanel بدانید این است که در حالت Vertical هر چقدر شما عرض صفحه را تغییر دهید، مناسب با آن عرض کنترل‌های موجود در StackPanel نیز تغییر می‌کند و همچنین در حالت Horizontal نیز هر چقدر ارتفاع صفحه را تغییر دهید، متناسب با آن ارتفاع کنترل‌های موجود در StackPanel نیز تغییر می‌کند.
StackPanel این کار را با استفاده از خاصیت‌های VerticalAlignment و HorizontalAlignmen و مقدار Stretch انجام می دهدبه عبارت دیگر مقدار پیش فرض این دو خاصیت به شکل زیر است:

<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">

مقادیر مختلفی که این دو خاصیت می‌توانند بگیرند را در شکل زیر مشاهده می‌کنید:

برای درک هر چه بهتر لازم است یک بار خودتان آن‌ها را تست کنید.