دوشنبه ۹ اسفند ۱۳۹۵
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 

 
 
 معرفی و بررسی کنترل Grid در WPF
WPF Graphics
تاریخ ثبت:  ۸۷/۱۰/۱۲
تعداد نمایش:  ۵۷۰۲
  نویسنده: مهدی کیانی
 
   ۱۲  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

مقدمه

کنترل گريد يکي از قوي ترين و پرکاربرد ترين کنترل هاي کانتينر مي باشد. به طور حتم مي توان گفت که در بيش از 90 درصد موارد، شما از اين کنترل براي طراحي واسط کاربري برنامه هاي خود استفاده خواهيد کرد. اين کنترل داراي خواص زيادي مي باشد که شما را در طراحي واسط هاي کاربري پيچيده ياري مي کند.

همانطور که تاکنون نيز شاهد بوده ايد، اين کنترل به صورت پيش فرض، کنترل کانتينر اصلي در هر پنجره اي قرار داده شده است که در مثال هاي قبلي ما ر حسي نياز آن را تغيير داده ايم و متناسب با نياز خود آن را تعريف کرده ايم.

مهمترين خواص کنترل گريد، خواص مربوط به تعاريف سطر و ستون آن مي باشد. با تعريف سطر ها وستون ها، مي توانيد مجموعه اي از سلول ها را در اين کنترل به وجود آوريد.
عناصري که بر روي اين کنترل قرار ميگيرند، هر يک مي توانند در يک سلول و يا بر حسب تعريفي که شما براي آن مشخص مي کنيد، در دو و يا بيش از دو سلول قرار گريد.
تعريف کنترل گريد در ساده ترين حالت، (تنها داراي يک سطر و يک ستون) به صورت زير مي باشد.

<Grid>
    <!--Controls goes here-->
</Grid>

تعريف فوق که در ابتداي ايجاد هر پنجره جديدي،د رون کد XAML آن پنجره مشاهده مي کنيد، يک کنترل گريد داراي يک سطر و ستون براي شما ايجاد مي کند. همانطور که قبلا نيز اشاره شد، اکثر کنترل ها در حالت پيش فرض، داراي خواص HorizontalAlignment و VerticalAlignment هستند که به صورت پيش فرض داراي مقدار Stretch مي باشند. با توجه به اين نکته چنانچه شما يک دکمه مانند Button را به توسط دستور زير :

<Button>sample Button</Button>

به کنترل گريد تعريف شده در کد قبل اضافه کنيد، کل فضاي گريد به کنترل Sample Button تعلق خواهد گرفت.

اين موضوع به اين دليل است که کنترل گريد سعي در اختصاص دادن کل فضاي موجود به کنترل هاي دروني آن مي باشد و نيز کنترل Button همانطور که گفته شد، داراي خواص HorizontalAlignment و VerticalAlignment با مقدار Stretch مي باشد که باعث مي شود، از حداکثر فضاي موجود بر روي کنترل والد خويش که به آن اختصاص داده شده است استفاده نمايد. کد زير همراه با شکل نشان دهنده مطالب گفته شده مي باشد.

<Window x:Class="Grid.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Button>sample Button</Button>
    </Grid>
</Window>

همانطور که در شکل فوق مشاهده مي شود، کنترل Button کل فضاي موجد گريد و در نتيجه کل فضاي پنجره را در اختيار گرفته است. ( زيرا کنترل گريد نيز کل فضاي پنجره را در اختيار گرفته است)

سطر ها وستون ها در کنترل گريد

از شکل فوق، مي توان نتيجه گرفت که کنترل گريد به آن صورتي که مطرح شد، داراي کارايي بالايي نمي باشد. زماني اين کنترل مي تواند به طور موثر و کارا در توليد واسط هاي کاربري شما موثر واقع شود که بتوانيد براي آن سطر ها و ستون هاي دلخواه خود را تعريف کنيد و از آن ها به صورت موثر و دلخواه استفاده نماييد. با تعريف سطر ها و ستون ها براي کنترل گريد، مي توانيد آن را به تعداد سلول دلخواه خود تقسيم کرده و کنترل هاي مورد نظر خود را درون آن سلول ها قرار دهيد.

هر کنترلي مي توانيد درون يک يا چند سلول قرار بگيرد و هر سلول با استفاده از کنترل هاي کانتينر مي تواند شامل يک يا چند کنترل باشد. در قسمت قبلي و در زماني که کنترل UniformGrid را توضيح مي دادم، اشاره شکردم که در آن کنترل نمي توانيد بر محل قرار گيري کنترل هاي فرزند، نظارت داشته باشيد و سلول هاي دلخواه خود را به کنترل هاي دلخواه خود، نسبت دهيد.

در واقع اين کنترل UniformGrid است که براي شما تصميم مي گيريد و کنترل هاي شما را بر اساس ترتيب تعريف شده آ ن ها در سلول هاي خود قرار مي دهد.

اما در کنترل Grid همه چيز در اختيار شما خواهد بود. مي توانيد مشخص کنيد که کدام کنترل در چه سلولي قرار گيرد، نيز مشخص کنيد که يک کنترل تا چند سطر و ستون را مي تواند احاطه کند و امکانات ديگري که در قسمت هاي بعدي به آن ها اشاره خواهد شد.

قرار گيري کنترل ها در کنترل گريد

براي قرار دادن کنترل هاي خود در ون يک کنترل گريد، دو مرحله زير را بايستي انجام دهيد

  1. مشخص کردن تعداد سطر ها و ستون هاي گريد

توسط خواصي که براي اين امر اختصاص داده شده است، مي توانيد تعداد سطر ها و ستون ها را در کنترل گريد خود مشخص کنيد.

  1. مشخص کردن سطر و ستون دلخواه براي کنترل هاي فرزند

همانطور که قبلا نيز اشاره شد، هر کنترل فرزندي بر اساس نوع کنترل والد خويش، داراي خواص جديدي مي شود که آن ها را خواص پيوست شده ناميديم. اين امر براي کنترل هايي که کنترل گريد به عنوان کنترل والد آن ها مي باشد نيز مستثنا نمي باشد. دو خاصيت Row و Column از جمله خواص پيوست شده به کنترل هاي فرزند، کنترل گريد مي باشند که توسط آن ها مي توانيد محل قرار گيري کنترل فرزند را مشخص نماييد. به عنوا مثال، کنرلي که داراي مقدار Row = 2 و Column = 3 مي باشد، درون سطر دوم و ستون سوم از کنترل گريد قرار خواهد گرفت.

سطر ها در کنترل گريد

کنترل گريد داراي خاصيتي به نام RowDefinitions مي باشد که توسط آن مي توانيد تعداد سطر دلخواه براي کنترل گريد تعريف نماييد. به قطعه کد زير توجه فرماييد:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
</Grid>

در شکل فوق، سه سطر براي کنترل گريد تعريف شده است. تعاريف سطر ها بين دو تگ آغازين <Grid.RowDefinitions> ، و تگ پاياني </Grid.RowDefinitions> قرار مي گيرند. هر سطر توسط دستور <RowDefinition></RowDefinition> مشخص مي شود. در واقع هر دستور <RowDefinition></RowDefinition> بيانگر يک سطر به عنوان سطر هاي گريد مي باشد. در نتيجه تعريف فوق، سه سطر براي کنترل گريد ايجاد مي کند. هر سطر در کنترل گريد داراي خواص بسياري است که رفتار آن سطر را در مقابل کنترل هايي که درون آن سطر قرار خواهند گرفت مشخص مي کند.

از ميان اين خواص، خواص Height، MaxHeight و MinHeight از اهميت بالاتري بر خوردار هستند. تعاريف مربوط به خواص MaxHeight و MinHeight در بخش هاي قبلي به تفضيل گفته شد. خاصيت Height داراي سه مقدار مختلف مي تواند باشد که کمي جلوتر در بخش "تعادل در اندازه سطر ها و ستون ها" توضيح داده خواهند شد.

ستون ها در کنترل گريد

کنترل گريد داراي خاصيتي به نام ColumnDefinitions مي باشد که توسط آن مي توانيد تعداد ستون هاي دلخواه براي کنترل گريد تعريف نماييد. به قطعه کد زير توجه فرماييد:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
</Grid>

در شکل فوق، سه ستون براي کنترل گريد تعريف شده است. تعاريف ستون ها بين دو تگ آغازين <Grid.ColumnDefinitions> ، و تگ پاياني </Grid.ColumnDefinitions> قرار مي گيرند. هرستون توسط دستور <ColumnDefinition></ColumnDefinition> مشخص مي شود. در واقع هر دستور <ColumnDefinition></ColumnDefinition> بيانگر يک ستون به عنوان ستون هاي گريد مي باشد. در نتيجه تعريف فوق، سه ستون براي کنترل گريد ايجاد مي کند. هر ستون در کنترل گريد داراي خواص بسياري است که رفتار آن ستون را در مقابل کنترل هايي که درون آن ستون قرار خواهند گرفت مشخص مي کند.

از ميان اين خواص، خواص Width، MaxWidth و MinWidth از اهميت بالاتري بر خوردار هستند. تعاريف مربوط به خواص MaxWidth و MinWidth در بخش هاي قبلي به تفضيل گفته شد. خاصيت Width داراي سه مقدار مختلف مي تواند باشد که کمي جلوتر در بخش "تعادل در اندازه سطر ها و ستون ها" به همراه تعريف مقادير Height براي سطر ها توضيح داده خواهند شد.

خاصيت ShowGridLines

کنترل گريد داراي خاصيتي به نام ShowGridLines مي باشد که مقدار پيش فرض آن False مي باشد. چنانچه اين مقدار را به True تغيير دهيد، مي توانيد خطوطي که سطر ها وستون هاي کنترل گريد را از يکديگر جدا مي کند را مشاهده نماييد. البته معمولا از اين خاصيت استفاده چنداني نمي شود مگر در موارد خاصي که شما نياز داشته باشيد، خط واصل بين سطر ها وستون ها را به کاربر نهايي نشان دهيد.
حال به قطعه کد زير که ترکيبي از دو قطعه کد فوق است توجه فرماييد:

<Window x:Class="Grid.Window1"   
xmlns="http :// schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid ShowGridLines="True">
        <!--Begin Grid Row Definitions-->
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition> <!--Frist Row-->
            <RowDefinition></RowDefinition><!--Second Row-->
            <RowDefinition></RowDefinition><!--Third Row-->
        </Grid.RowDefinitions>
        <!--End of Grid Row Definitions-->
       
        <!--Begin Grid Column Definitions-->
        <Grid.ColumnDefinitions>
           
<ColumnDefinition></ColumnDefinition><!--First Column-->
<ColumnDefinition></ColumnDefinition><!--Second Column-->
<ColumnDefinition></ColumnDefinition><!--Third Column-->
        </Grid.ColumnDefinitions>
        <!--End of Grid Column Definitions-->
      
    </Grid>
</Window>

قطعه کد فوق، سه سطر و سه ستون براي کنترل گريد تعريف مي کند که در مجموع 9 سلول را براي اين کنترل به وجود مي آورند. نتيجه حاصل از قطعه کد فوق را در شکل زير مشاهده مي کنيد:

تعادل در اندازه سطر ها و ستون ها

همانطور که در شکل فوق مشخص است، فضاي موجود بر روي کنترل گريد، به صورت مساوي بين تمامي سطر ها وستون هاي اين کنترل تقسيم مي شود. در زمان اجراي برنامه و با تغيير سايز پنجره و به تبع آن تغيير سايز گريد، اين فضا همچنان به صورت اتوماتيک، به قسمت هاي مساوي بين سطر هاو ستون هاي کنترل گريد، تقسيم مي شود. در واقع در حالت عادي، کنترل گريد داراي رفتاري مشابه با کنترل UniformGrid مي باشد که در بخش قبلي در رابطه با آن توضيحات مفصلي داده شد.

همانطور که اشاره شد، سطر ها داراي خاصيتي به نام Height و ستون ها داراي خاصيتي به نام Width در کنترل گريد مي باشند. هر يک از اين دو خاصيت، مي توانند يکي از سه مقدار زير را در بر گيرند که با توجه به آن مقدار فضاي آن و رفتار آن با کنترل دروني خودش مشخص مي شود.

  1. سايز مطلق

توسط اين خاصيت مي توانيد، مقدار مشخص و ثابتي را به عنوان عرض ستون و يا ارتفاع سطر مشخص کنيد. به عنوان مثال دستور

<RowDefinition Height="200"></RowDefinition>

سطري را با ارتفاع ثابت 200 تعريف مي کند و دستور زير:

<ColumnDefinition Width="200"></ColumnDefinition>

ستوني را با عرض ثابت 200 تعريف مي کند.

  1. سايز اتوماتيک

اين خاصيت، عرض ستون و ارتفاع سطر را به صورت اتوماتيک و بر اساس نياز کنترل دروني خودش تنظيم ميکند. به عنوان مثال اگر کنترلي با داراي عرض 200 و ارتفاع 300 باشد و درون سلولي که سطر و ستون آن با اين روش مقدار دهي شده اند، قرارداشته باشد، سلول مورد نظر تغيير اندازه داده تا بتواند کل فضاي مورد نياز آن کنترل را تامين کنيد. مقداري که بايد به کار برده شود تا سطر و ستوني به عنوان سطر و ستون اتوماتيک معرفي گردد، کلمه Auto مي باشد. به کد هاي زير توجه کنيد:

<RowDefinition Height="Auto"></RowDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>

در شکل فوق سطر و ستوني با ارتفاع اتوماتيک تعريف شده اند.

  1. سايز نسبي

توسط اين خاصيت، فضاي موجود بين تعداي سطر و ستون تقسيم بندي مي شود. در واقع اين حالت، حالت پيش فرض براي عرض ستون ها و ارتفاع سطرها مي باشد. توسط کاراکتر * مي توانيد از اين خاصيت براي خواص Width و Height استفاده نماييد.

به عنوان مثال، کد هاي زير نتيجه اي يکسان با آن چيزي که در شکل قبلي ملاحظه کرديد را خواهد داشت.

<Grid ShowGridLines="True">
    <!--Begin Grid Row Definitions-->
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition><!--Frist Row-->
        <RowDefinition Height="*"></RowDefinition><!--Second Row-->
        <RowDefinition Height="*"></RowDefinition><!--Third Row-->
    </Grid.RowDefinitions>
    <!--End of Grid Row Definitions-->
   
    <!--Begin Grid Column Definitions-->
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"></ColumnDefinition><!--First Column-->
        <ColumnDefinition Width="*"></ColumnDefinition><!--Second Column-->
        <ColumnDefinition Width="*"></ColumnDefinition><!--Third Column-->
    </Grid.ColumnDefinitions>
    <!--End of Grid Column Definitions-->
</Grid>

نکته قابل توجه اي که مي توان در حالت سايز نسبلي به آن توجه داشت و به واقع دليل اصلي نام گذاري آن نيز، همين نکته مي باشد اين است که شما مي توانيد سطري يا ستوني را از لحاظ ارتفاع و عرض، چندين برابر سطر و يا ستون ديگري تعريف کنيد. به عنوان مثال سطري که خاصيت ارتفاع آن به صورت Height = 2* تعريف شده باشد، ارتفاعش دو برابر سطري است که ارتفاع آن به صورت Height = * تعريف شده باشد. به همين صورت سطري که ارتفاع آن به صورت Height=0.25* تعريف شده است، ارتفاعي به اندازه 1/8 سطري دارا که ارتفاع آن به صورت Height =2* تعريف شده است. اين موضوع در مورد ستون ها و عرض آن ها نيز صدق است.

تعيين سلول براي کنترل ها ي فرزند در کنترل گريد

قبلا اشاره شد که دليل اصلي اينکه کنترل گريد از قويترين و پرکاربرد ترين کنترل هاي کانتيتر مي باشد اين است که شما کنترل کاملي بر روي سطر ها وستون هاي گريد مي توانيد داشته باشيد. در اين قسمت به نحوه تخصيص يک سلول خاص در کنترل گريد را به يک کنترل مشخص نشان خواهم داد. براي تخصيص سلول خاصي از کنترل گريد به يکي از کنترل هاي فرزند از خواص پيوست شده Row و Column استفاده خواهيم کرد.

به نمونه کد زير دقت کنيد:

<Button Grid.Row="2" Grid.Column="2"
button3</Button>

در قطعه کد فوق، دکمه تعريف شده در سطر و ستون سوم ( سلول 9) در گريد مربوطه قرار خواهيد گرفت.

نکته:
شماره سطر ها وستون ها در گريد از صفر شروع مي شود. بنابرين مقدار 2 براي سطر و ستون معرف سطر و ستون سوم در گريد مي باشد.

نکته:
چنانچه بخواهيد کنترلي را در سلول اول از گريد قرار دهيد، نياز به تنظيم خواص Row و Column از گريد نداريد. در واقع مقدار پيش فرض اين خواص، صفر مي باشد که بيانگر سطر و ستون اول گريد مي باشد.
براي درک بهتر به نمونه کر زير دقت کنيد:

<Window x:Class="Grid.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid ShowGridLines="True">
        <!--Begin Grid Row Definitions-->
        <Grid.RowDefinitions>
            <RowDefinition ></RowDefinition> <!--Frist Row-->
            <RowDefinition ></RowDefinition><!--Second Row-->
            <RowDefinition ></RowDefinition><!--Third Row-->
        </Grid.RowDefinitions>
        <!--End of Grid Row Definitions-->
 
        <!--Begin Grid Column Definitions-->
        <Grid.ColumnDefinitions>
            <ColumnDefinition
></ColumnDefinition><!--First Column-->
            <ColumnDefinition
></ColumnDefinition><!--Second Column-->
            <ColumnDefinition
></ColumnDefinition><!--Third Column-->
        </Grid.ColumnDefinitions>
        <!--End of Grid Column Definitions-->
        <!--Start Of Defining Child Controls-->
       <Button >button1</Button>  <!--the Grid cell of this button is 0-->     
        <Button Grid.Row="1" Grid.Column="1"
>button2</Button><!--the Grid cell of this button is 5-->
        <Button Grid.Row="2" Grid.Column="2"
>button3</Button><!--the Grid cell of this button is 9-->
    </Grid>
</Window>

هماطور که مشاهده مي کنيد، براي اولين دکمه خواص Row و Column تنظيم نشده اند، در نتيجه دکمه مذکور در اولين سطر و ستون از گريد قرار خواهد گرفت.

نتيجه اجراي کد فوق مشابه زير خواهد بود:

محدوده سطر و ستون ها در کنترل گريد

در اين قسمت دو خاصيت ديگر از خواص پيوست شده براي کنترل هاي درون کنترل گريد را مورد بررسي قرار خواهيم داد. اين خواص نشان دهنده محدوده اي از تعداد سطر ها وستون هايي از گريد هستند که يک کنترل مي تواند دربر گيرد. توسط اين خواص مي توانيد کنترل بهتري بر روي عناصر و محل قرار گيري آن ها داشته باشيد.

خاصيت RowSpan

توسط اين خاصيت مي توانيد مشخص کنيد که کنترلي چند سطر از سطر هاي گريد را مي تواند در بر گيرد. به عنوان مثال قطعه کد زير:

<Grid ShowGridLines="True">
    <!--Begin Grid Row Definitions-->
    <Grid.RowDefinitions>
        <RowDefinition ></RowDefinition>
        <!--Frist Row-->
        <RowDefinition ></RowDefinition>
        <!--Second Row-->
        <RowDefinition ></RowDefinition>
        <!--Third Row-->
    </Grid.RowDefinitions>
    <!--End of Grid Row Definitions-->
    <!--Begin Grid Column Definitions-->
    <Grid.ColumnDefinitions>
        <ColumnDefinition ></ColumnDefinition>
        <!--First Column-->
        <ColumnDefinition ></ColumnDefinition>
        <!--Second Column-->
        <ColumnDefinition ></ColumnDefinition>
        <!--Third Column-->
    </Grid.ColumnDefinitions>
    <!--End of Grid Column Definitions-->
    <!--Start Of Defining Child Controls-->
    <Button >button1</Button>
    <!--the Grid cell of this button is 0-->
    <Button Background="GreenYellow" Grid.Row="0"
Grid.Column="1" Grid.RowSpan="3" >button2</Button>
  
    <Button Grid.Row="2" Grid.Column="2" >button3</Button>
    <!--the Grid cell of this button is 9-->
</Grid>

در قطعه کد فوق، دکمه دوم داراي خاصيت RowSpan برابر با سه مي باشد. همچنين دقت کنيد که خاصيت Row آن از يک در مثال قبل به صفر در اين مثال تغيير کرده است.
نتيجه حاصل از کد فوق را در شکل زير مشاهده مي کنيد

خاصيت ColumnSpan

توسط اين خاصيت مي توانيد مشخص کنيد که کنترلي چند ستون از ستون هاي گريد را مي تواند در بر گيرد. به عنوان مثال قطعه کد زير:

<Grid ShowGridLines="True">
    <!--Begin Grid Row Definitions-->
    <Grid.RowDefinitions>
        <RowDefinition ></RowDefinition>
        <!--Frist Row-->
        <RowDefinition ></RowDefinition>
        <!--Second Row-->
        <RowDefinition ></RowDefinition>
        <!--Third Row-->
    </Grid.RowDefinitions>
    <!--End of Grid Row Definitions-->
    <!--Begin Grid Column Definitions-->
    <Grid.ColumnDefinitions>
        <ColumnDefinition ></ColumnDefinition>
        <!--First Column-->
        <ColumnDefinition ></ColumnDefinition>
        <!--Second Column-->
        <ColumnDefinition ></ColumnDefinition>
        <!--Third Column-->
    </Grid.ColumnDefinitions>
    <!--End of Grid Column Definitions-->
    <!--Start Of Defining Child Controls-->
    <Button >button1</Button>
    <!--the Grid cell of this button is 0-->
    <Button Background="GreenYellow" Grid.Row="1"
Grid.Column="0" Grid.ColumnSpan="3"
>button2</Button>
  
    <Button Grid.Row="2" Grid.Column="2"
>button3</Button>
    <!--the Grid cell of this button is 9-->
</Grid>

در قطعه کد فوق، دکمه دوم داراي خاصيت ColumnSpan برابر با سه مي باشد. همچنين دقت کنيد که خاصيت Column آن از يک در مثال قبل به صفر در اين مثال تغيير کرده است.

نتيجه حاصل از کد فوق را در شکل زير مشاهده مي کنيد:

ن

نمونه کد زير نحوه استفاده از خواص RowSpan و ColumnSpan و نتيجه آن را در شکل بعد از آن نشاند مي دهد.

<Grid ShowGridLines="True">
    <!--Begin Grid Row Definitions-->
    <Grid.RowDefinitions>
        <RowDefinition ></RowDefinition>
        <!--Frist Row-->
        <RowDefinition ></RowDefinition>
        <!--Second Row-->
        <RowDefinition ></RowDefinition>
        <!--Third Row-->
        <RowDefinition ></RowDefinition>
        <!--Fourth Row-->
    </Grid.RowDefinitions>
    <!--End of Grid Row Definitions-->
    <!--Begin Grid Column Definitions-->
    <Grid.ColumnDefinitions>
        <ColumnDefinition ></ColumnDefinition>
        <!--First Column-->
        <ColumnDefinition ></ColumnDefinition>
        <!--Second Column-->
        <ColumnDefinition ></ColumnDefinition>
        <!--Third Column-->
        <ColumnDefinition ></ColumnDefinition>
        <!--Fourth Column-->
    </Grid.ColumnDefinitions>
    <!--End of Grid Column Definitions-->
    <!--Start Of Defining Child Controls-->
    <Button >button1</Button>
 
    <Button Background="GreenYellow" Grid.Row="1"
Grid.Column="0" Grid.ColumnSpan="4"
Grid.RowSpan="2" >
        button2</Button>     
    <Button Grid.Row="3" Grid.Column="3"
>button3</Button>
  
</Grid>

دقت کنيد که در اين نمونه، تعداد سطر ها وستون ها به چهار، افزايش پيدا کرده است. خاصيت RowSpan از دکمه دوم برابر با چهار و خاصيت ColumnSpan از آن برابر با دو تنظيم شده است.

کنترل گريد از مهمترين و پر کاربرد ترين کنترل هاي کانتينر در WPF مي باشد. پس تمرکز زيادي بر آن داشته باشيد و سعي کنيد که کاملا بر آن و نحوه استفاده از ان مسلط شويد.

سورس برنامه

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
مهدی کیانی
همه مقاله های نوشته شده توسط این کاربر (۴)
 
  پیام جدید
صفحه ۱ - پیامهای اصلی ۱ تا ۱ از مجموع ۱ پیام اصلی
اولین قبلی بعدی

 عنوان فرستنده تاریخ
 
اي كاش... واندرموند واندر ۱۳۸۹/۵/۲۶
اولین قبلی بعدی

Copyright © 2006 - 2016 All Rights Reserved.
Please direct your questions or comments to