ادامه کنترل StackPanel ( نمونه کد های نوشته شده در این پست و پست قبلی در قالب یک پروژه در آخر همین تاپیک پیوست شده است. )
--------------------------------
خواص تراز بندی :
دو خاصیت HorizontalAlignment و VerticalAlignment که در موارد متعددی استفاده می گردند، محل قرار گیری افقی و عمودی کنترل را نسبت به کنترل کانتینر خودش مشخص می کند.
خاصیت HorizontalAlignment :
مقادریر خاصیت HorizontalAlignment عبارتند از :
Left : این مقدار، باعث می شود که کنترل مورد نظر از سمت چپ کنترل پدرش تراز شود.
Right : این مقدار، باعث می شود که کنترل مورد نظر از سمت زاست کنترل پدرش تراز شود.
Center : این مقدار، باعث می شود که کنترل مورد نظر در قسمت وسط کنترل پدرش تراز شود.
Stretch : این مقدار باعث می شود که کنترل تمامی عرض کنترل پدرش را پوشش دهد.
عکس زیر، موارد گفته شده را نشان می دهد:
کدی که برای برنامه فوق نوشته شده است::
<Window x:Class="StackPanel.HAlignment"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="HAlignment" Height="300" Width="300">
<StackPanel>
<TextBox HorizontalAlignment="Left" Name="txtNum1">HorizontalAlignment="Left"</TextBox>
<TextBox HorizontalAlignment="Right" Name="txtNum2">HorizontalAlignment="Right"</TextBox>
<Button HorizontalAlignment="Center" Name="btnSum" Click="btnSum_Click">Get Sum(HorizontalAlignment="Center")</Button>
<TextBox Name="txtResult">HorizontalAlignment="Stretch"</TextBox>
</StackPanel>
</Window>
خاصیت VerticalAlignment :
این خاصیت دارای چهار مقدار زیر می باشد :
Top: که باعث می شود کنترل از سمت بالای کنترل پدر خویش تراز شود.
Bottom : که باعث می شود کنترل از سمت پایین کنترل پدر خویش تراز شود
Center: که باعث می شود کنترل دروسط کنترل پدر خویش تراز شود.
Stretch: که باعث می شود، کنترل از تمامی فضای موجود، استفاده کند.
نکته :
کنترل StackPanel ، به کنترل های فرزند خود به همان مقدار فضا که نیاز دارند، فضا اختصاص می دهد. به همین دلیل اگر دستورات مروبط خاصیت VerticalAlignment را با شکل فوق به کار ببرید، تاثیری در چیدمان کنترل ها نخواهد داشت.
-----------------------------
خاصیت Margin:
این خاصیت، فاصله کنترل را از کنترل های اطراف خودش مشخص می کند . این خاصیت دارای چهار مقدار Left،Top،Bottom و Right می باشد.
نحوه مقدار دهی این خاصیت در اسناد XAML به صورت زیر می باشد :
<ElementName ... Margin="5,5,5,5"></ElementName>
با کد فوق، عنصری که برای آن خاصیت Margin مشخص شده است، از هر طرف به مقدار 5 واحد با کنترل های اطرافش فاصله خواهد دشت.
نکته :
اگر مقادیر فاصله ای که می خواهید قرار دهید برای هر چهار طرف یکسان باشد، کافی است به جای کد فوق از کد زیر استفاده کنید:
<ElementName ... Margin="5 "></ElementName>
دو قطعه کد فوق یکسان می باشند. در واقع می توانید تنها با قرار دادن یک، هر چهار مقدار این خاصیت را مقدار دهی کنید.
شکل زیر، نمونه ای از نحوه استفاده از این خاصیت را مشخص می کند :
کد مربوط به شکل فوق :
<StackPanel>
<TextBox HorizontalAlignment="Left" Margin="5" Name="txtNum1">Margin="5,5,5,5"</TextBox>
<TextBox HorizontalAlignment="Right" Margin="5,10,0,25" Name="txtNum2">Margin="5,10,0,25"</TextBox>
<Button HorizontalAlignment="Center" Margin="10,0,0,30" Name="btnSum" Click="btnSum_Click">Margin="10,0,0,30"</Button>
<TextBox Name="txtResult" Margin="0,50,0,0" >Margin="0,50,0,0"</TextBox>
</StackPanel>
------------------------------
خواص سایز :
شش خاصیت زیر برای تنظیم سایز کنترل ها به کار می روند :
خاصیت Width : این خاصیت، عرض کنترل را به صورت صریح مشخص می کند.
خاصیت Height : این خاصیت به صورت صریح، مقدار ارتفاع کنترل را مشخص می کند.
خاصیت MinHeight: این خاصیت مینیمم ارتفاعی را که یک کنترل می تواند اختیار کند را مشخص می کند.
خاصیت MinWidth: این خاصیت مینیمم عرضی را که یک کنترل باید داشته باشد را مشخص می کند.
خاصیت MaxHeight: این خاصیت ماکزیمم ارتفاعی را که یک کنترل می تواند اختیار کند را مشخص می کند.
خاصیت MaxWidth: این خاصیت ماکزیمم عرضی را که یک کنترل باید داشته باشد را مشخص می کند.
نکته :
همانور که گفته شد، تا جایی که امکان پذیر است، نبایستی از خواص Width و Height برای مقدار دهی عرض و ارتفاع کنترل ها استفاده کرد. یکی از مواردی که این موضوع می تواند کارایی برنامه را پایین آورد، زمانی است که بخواهید برنامه خود را Localizable کنید.