0

>> Learning WPF Full <<

 
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

ادامه کنترل StackPanel
در پست قبلی دربارۀ یکی از کنترل های کانتینر صحبت کردم ، در این پست به ادامۀ این کنترل می پردازم
 
خواص تراز بندی :
 
دو خاصیت HorizontalAlignment و VerticalAlignment که در موارد متعددی استفاده میشه، محل قرار گیری افقی و عمودی کنترل را نسبت به کنترل کانتینر خودش مشخص می کنه.
 
خاصیت HorizontalAlignment :
 
مقادریر خاصیت HorizontalAlignment عبارتند از :
 
Left : این مقدار، باعث میشه که کنترل مورد نظر از سمت چپ کنترل پدرش تراز بشه.
 
Right : این مقدار، باعث میشه که کنترل مورد نظر از سمت زاست کنترل پدرش تراز بشه.
 
Center : این مقدار، باعث میشه که کنترل مورد نظر در قسمت وسط کنترل پدرش تراز بشه.
 
Stretch : این مقدار باعث می شود که کنترل تمامی عرض کنترل پدرش را پوشش دهد.
 
خاصیت VerticalAlignment :
 
Top: باعث میشه کنترل از سمت بالای کنترل پدرش تراز بشه
 
Bottom : باعث میشه کنترل از سمت پایین کنترل پدرش تراز بشه
 
Center: باعث میشه کنترل در وسط کنترل پدرش تراز بشه
 
Stretch: باعث میشه ، کنترل از تمامی فضای موجود استفاده کنه
 
کنترل StackPanel ، به کنترل های فرزند خودش به همان مقدار فضا که نیاز داره ، فضا اختصاص میده
 
شش خاصیت زیر برای تنظیم سایز کنترل ها به کار میره:
 
خاصیت Width : این خاصیت، عرض کنترل رو مشخص می کنه.
 
خاصیت Height : این خاصیت، مقدار ارتفاع کنترل را مشخص می کنه.
 
خاصیت MinHeight: این خاصیت مینیمم ارتفاعی را که یک کنترل می تواند بگیره رو مشخص می کنه.
 
خاصیت MinWidth: این خاصیت مینیمم عرضی را که یک کنترل باید داشته باشه رو مشخص می کنه.
 
خاصیت MaxHeight: این خاصیت ماکزیمم ارتفاعی را که یک کنترل می تواند بگیره رو مشخص می کنه.
 
خاصیت MaxWidth: این خاصیت ماکزیمم عرضی را که یک کنترل باید داشته باشه رو مشخص می کنه.

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:03 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 کنترل Canvas
این کنترل یکی دیگه از کنترل های کانتینر می باشد که عناصر مختلف می تونن روی آن قرار بگیرن، از این کنترل به ندرت در برنامه ها استفاده میشه 
این کنترل هم چهار خاصیت Left ،Top ، Bottom و Right دارد که درون کنترل Canvas قرار دارد شما میتونین با کشیدن و رها کردن این کنترل روی فرم اونو فراخوانی و استفاده کنید و راهی دیگه این که از کدنویسی xaml برای فراخوانیش استفاده کنید به شکل زیر
 
کد PHP:
        <Canvas HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"/>  
مکان هر کنترل دیگه ای درون کنترل Canvas با چهار خاصیتی که ذکر کردم تعیین میشه
 
خاصیت ZIndex :
 
توسط این خاصیت می تونید نحوۀ چیدن عناصری رو که روی هم قرار گرفته اند رو مشخص کنید هر کنترلی که مقدار ZIndex ش بزگتر باشد، بر روی کنترل هایی که مقدار ZIndex اونا کوچکتر است قرار خواهد گرفت.
اگه یک کنترل Button روی یک Canvas قرار بگیره اون Button دارای خاصیت ZIndex است
 
 
در تصویر زیر دقت کنید من یک عنصر رو که همون Button روی یک کنترل Canvas قرار دادم و یک Background براش تعیین کردم با رنگ سبز و با خاصیت ZIndex چیدمانشو مشخص کردم خب اینکارو با کدنویسی هم میشه انجام داد به شکل زیر که کل کد پروژه میشه به این شکل
 
 
کد PHP:
<Window x:Class="WpfApplication1.MainWindow" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
        <Button  Background="Green" Canvas.Left="60" Canvas.Top="24" MinHeight="50" Canvas.ZIndex="0" Margin="63,68,78,73" >My sample</Button> 
    </Grid> 
</Window>  
 
خب حالا وقتی برنامه رو اجرا کنید با نگهداشتن موس روی دکمه تغییر رنگو میبینید و همچنین با کنار رفتن موس از روی دکمه
 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:03 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

کنترل DockPanel
این خاصیت برای هر کنترلی که تنظیم میشه ، باعث میشه که کنترل مورد نظرتون بر اساس مقداری که برای خاصیت Dock تنظیم شده ، به یکی از گوشه های کنترل پدر خودش وصل میشه مثلا اگه کنترلی دارای مقدار Top برای خاصیت Dock باشه، و این کنترل مستقیما بر روی فرم قرار گرفته باشه ، این کنترل به گوشه بالایی فرم متصل میشه در نتیجه با تغییر عرض فرم، این کنترل به صورت اتوماتیک تغییر سایز میده و عرض خودش را با عرض فرم مجددا تنظیم می کنه
 
کنترل DockPanel مشابه با کنترل Dock است با این تفاوت که قدرت بسیار بالاتر و امکانات بسیار بیشتری را در اختیار شما قرار میده.
هر کنترلی که در کنترل DockPanel قرار بگیره، خاصیتی به نام Dock بهش پیوست میشه این خاصیت دارای چهار مقدار Left، Top، Bottom و Right است. توسط این مقادیر می تونید کنترل های رو در کنترل DockPanel تنظیم کنید
 
نحوۀ فراخوانی این کنترل با کدنویسی xaml مقدروه و راه دیگه اینه که از طریق درگ دراپ روی فرمتون اونو فراخوانی کنید ، کد اصلی به این شکل خواهد بود :
 
 
کد PHP:
<Window x:Class="WpfApplication1.MainWindow" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
        <DockPanel HorizontalAlignment="Left" Height="100" LastChildFill="False" VerticalAlignment="Top" Width="100"/> 
    </Grid> 
</Window>  
 
خب من به عنوان مثال >> دکمه ای رو به عنوان فرزند کنترل DockPanel تعریف کردم که در سمت راست خودش قرار گرفته ، دستور DockPanel.Dock="Right" باعث میشه که کنترل، به گوشه سمت راست کنترل DockPanel منتقل بشه و یه متنی رو در وسط فرم نوشتم به این صورت میشه خروجیش :
 
کد PHP:
<Window x:Class="WpfApplication1.MainWindow" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
        <Button DockPanel.Dock="Right">"Right"</Button> 
    </Grid> 
</Window>  

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:03 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 ادامه کنترل DockPanel
ترتیب در Dock کردن کنترل ها :
 
ترتیب تنظیم خاصیت Dock مربوط به کنترل ها در کنترل DockPanel خیلی مهم هست، خب این جمله رو با یه تیکه کد براتون توضیح میدم دقت کنید به کد زیر :
 
کد PHP:
<Window x:Class="DockPanel.Window1" 
 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
 
    Title="Window1" Height="303.71" Width="579.505"> 
    <DockPanel Margin="0,0,2,2"> 
        <Button Background="Blue" DockPanel.Dock="Top" Margin="0,0,-12,0" Content="button2" Height="46"/> 
        <Button Background="Green" Margin="103,0,179,0" Content="button1" DockPanel.Dock="Bottom" Height="50"/> 
    </DockPanel> 
</Window>  
 
 
در کد بالا و در تصویر می بینید ، دکمه ای که با رنگ آبی مشخص کردم، به دلیل اینکه قبل از دکمه سبز رنگ تعریف شده ، کل فضای گوشه بالای فرمو به خودش اختصاص داده.
خب حالا من جای دو دکمه رو عوض میکنم فقط دوخط زیرو 
 
کد PHP:
        <Button Background="Green" Margin="103,0,179,0" Content="button1" DockPanel.Dock="Bottom" Height="50"/> 
        <Button Background="Blue" DockPanel.Dock="Top" Margin="0,0,-12,0" Content="button2" Height="46"/>  
 
خروجی این تعویض دقیقا تصویر بالا خواهد بود پس وقتی ترتیبی در نظر گرفته میشه همون ترتیب تا آخر تثبیت خواهد شد
 
 
مقدار Fill در خاصیت Dock : 
 
خاصیت Dock از کنترل DockPanel دارای مقدار Fill نیست و یهش نیازی نداره ، دلیلشم به خاطر ترتییب چیدن کنترل ها در کنترل DockPanel مربوط ست.
در واقع این کنترل سعی میکنه تا کل فضا رو به کنترل فرزندش اختصاص بده

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 کنترل WrapPanel
کنترل WrapPanel یکی از کنترل های کانتینر است این کنترل در طراحی واسط کاربری شما نقش زیادی نمی تونه بازی کنه، در واقع مواردی که از این کنترل می تونیم استفاده کنیم محدود و در بعضی از کاربرد های خاص به کار میره.
 
کنترل WrapPanel عناصر فرزند خودشو به دو صورت می تونه تراز بندی کنه که اینم بستگی به خاصیت Orientation این کنترل داره اگه این خاصیت روی Horizontal باشه (حالت پیش فرض horizontal هست)، عناصر به صورت سطری و در داخل اولین سطر از این کنترل قرار می گیرن.
اگه مقدار فضای مورد نیاز برای کنترل های فرزند، بیشتر از فضای موجود بر روی یک سطر باشه عناصر فرزند به صورت اتوماتیک به سطر بعدی شیفت داده میشن این عملیات اونقدر تکرار میشه تا همۀ عناصر بر روی کنترل WrapPanel قرار داده بشن
 
 
خب برای فراخوانی این کنترل میتونید از قسمت toolbox و بازکردن برگۀ All WPF Control انتخابش کنید و روی فرمتون قرار بدید
 
 
 
با یک مثال ساده روش کارشو بتون نشون میدم دقت کنید به کد زیر :
 
کد PHP:
<Window x:Class="DockPanel.Window1" 
 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="310.155" Width="637.512"> 
    <WrapPanel HorizontalAlignment="Center" Height="202" Background="B-r-o-w-n" VerticalAlignment="Top" Width="313" Margin="0,72,0,0"> 
        <Button Background="Blue" Height="100" Width="100"></Button> 
    </WrapPanel> 
</Window>  
 
من در همزمان با فراخوانی کنترل WrapPanel یک کنترل Button روی اون با خاصیت های دلخواهم قرار دادم دقت کنید پس زمینه قهوه ای رنگ محدودۀ کنترل WrapPanel است
این قطعه کد مربوط به پنجره ای است که یک کنترل WrapPanel به عنوان کنترل کانتینر در اون وجود داره و درون این کنترل، یک دکمه قرار داده شده که دارای خواص مربوط به خودش است.

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 کنترل UniformGrid
این کنترل به تعدادی سطر و ستون با اندازه های یکسان تقسیم بندی میشه ، عناصر فرزند این کنترل می تونن در هریک از این سلول ها قرار بگیرن.
سلول های ساخته شده از ایجاد این کنترل، همه دارای اندازه های یکسان هستن.
 
برای فراخوانی این کنترل روی فرمتون میتونید با کدنویسی اونو صدا بزنید به این شکل 
 
کد PHP:
   <UniformGrid Rows="8" Columns="5"> 
 
 
 
    </UniformGrid>  
اگه خواستین کنترل رو بدون کدنویسی روی فرمتون اضافه کنید باید دقت کنید که این کنترل به صورت پیش فرض در toolbox وجود نداره و باید اونو از قسمت wpf components به toolbox تون اضافه کنید به صورت زیر 
 
 
 
فقط دقت کنید که باید سطر و ستون رو بهش بدیم چون به تعدادی از این سطر و ستون ها احتیاج داره، در واقع خودش شامل کنترل ، تعداد سطر ها و تعداد ستون ها ست
این کنترل برای موارد خاصی استفاده میشه و به ندرت در طراحی واسط های برنامه ها به کار برده میشه
 
به ماشین حساب ساده ای که طراحی شده دقت کنید 
 
کد PHP:
<Window x:Class="UniformGrid.UniformGridContainer" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="UniformGridContainer" Height="212.049" Width="263.533"> 
    <Window.Resources> 
    </Window.Resources> 
    <UniformGrid Rows="6" Columns="6" Margin="0,0,2,5"> 
        <Button  Background="Red" >*</Button> 
        <Button  Background="Blue">1</Button> 
        <Button  Background="Azure">2</Button> 
        <Button Background="CornflowerBlue" >3</Button> 
        <Button Background="Cyan" >4</Button> 
        <Button  Background="Cornsilk">5</Button> 
        <Button >6</Button> 
        <Button >7</Button> 
        <Button >8</Button> 
        <Button >10</Button> 
    </UniformGrid> 
</Window>  
 
 
با توضیحاتی که دادم درک این کنترل که چه کاری انجام میده کاملا واضحه ، در این کنترل، مستقیما نمی تونیم مشخص کنیم که کدوم کنترل در چه سلولی قرار بگیره در واقع سلول هر کنترل بر اساس ترتیبی که آن کنترل در کنترل های فرزند کنترل UniformGrid داره، مشخص میشه

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 ادامۀ کنترل Grid
در کنترل Grid همه چیز به صورت سفارشی انجام میشه و می تونید مشخص کنید که کدوم کنترل در چه سلولی قرار بگیره، و مشخص کنید که یک کنترل تا چند سطر و ستون را می تونه در خودش داشته باشه .
با تعریف کردن سطرها و ستون ها برای کنترل گریدتون ، می تونید اونو به تعداد سلول دلخواهی که نیاز دارید تقسیم کنید و کنترل های مورد نظرتونو رو در سلول ها قرار بدید پس کار مشکلی نیست با توضیحاتی که دادم و
 
هر کنترلی می تونه درون یک یا چند سلول قرار بگیره .
 
خب در این پست فعلا در رابطه با سطرها صحبت میکنیم
 
اول به کد زیر کمی دقت کنید
 
 
 
کد PHP:
<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="235.689" Width="453.357"> 
    <Grid> 
        <Grid.RowDefinitions> 
            <RowDefinition></RowDefinition> 
            <RowDefinition></RowDefinition> 
            <RowDefinition></RowDefinition> 
        </Grid.RowDefinitions> 
 
    </Grid> 
</Window>  
خب توجه کنید که کنترل گرید دارای خاصیتی به نام RowDefinitions هست که توسط این خاصیت می تونید تعداد سطر دلخواهی برای کنترل گریدتون تعریف کنید
 
در کد بالا ، سه سطر برای کنترل گرید تعریف کردیم که بین دو تگ <Grid.RowDefinitions> ، و تگ پایانی </Grid.RowDefinitions> قرار دارند.
هر سطر توسط دستور <RowDefinition></RowDefinition> مشخص میشن و در واقع هر دستور <RowDefinition></RowDefinition> نمایش دهندۀ یک سطر به عنوان سطرهای گریدتون هست که خب ما در کد بالا سه سطر برای کنترل گرید ایجاد کردیم.

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 کنترل Grid
کنترل گرید یکی از قوی ترین و پرکاربرد ترین کنترل های کانتینر می باشد
مهمترین خواص کنترل گرید، خواص مربوط به تعاریف سطر و ستون است، با تعریف سطرها وستون ها، می تونید مجموعه ای از سلول ها را در این کنترل به وجود بیارید
عناصری که روی این کنترل قرار میگیرن ، هر کدوم به تنهایی می تونن در یک سلول و یا برحسب تعریفی که ما براش مشخص می کنیم، در دو و یا بیش از دو سلول قرار بگیرن. 
 
برای فراخوانی این کنترل از قسمت toolbox وارد شده و با کشیدن و رها کردن روی فرمتون اونو فراخوانی کنید 
 
کد xaml به شکل زیر هست
 
کد PHP:
<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid HorizontalAlignment="Left" Height="315" VerticalAlignment="Top" Width="507" Margin="10,0,0,0">
    </Grid>
 
</Window>  
خب من در کد بالا یه button هم به گریدم تزریق میکنم تا شکل کلیشو با کنترل های دیگه ببینیم ، این کنترل هم با دریافت یه کنترل دیگه کل فضای مورد نیازو بهش اختصاص میده که میتونید بعد از طراحی اندازشو تغییر بدید
 
کد PHP:
<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="235.689" Width="453.357">
    <Grid>
        <Button Background="*****">sample Button</Button>
    </Grid>
</Window>  

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 ادامۀ کنترل Grid (ستون ها)
در پست قبلی دربارۀ سطرها در کنترل گرید براتون صحبت کردم و قرار شد دربارۀ ستون ها و طرز تعریف و قرار گیریشون براتون صحبت کنم که در این پست به همین بخش می پردازیم
 
کنترل گرید دارای خاصیتی به نام ColumnDefinitions هست که توسط اون می تونید تعداد ستون های دلخواه تونو برای کنترل گرید تعریف کنید، به کد زیر دقت کنید :
 
کد PHP:
<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="235.689" Width="453.357">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
    </Grid>
</Window>  
در کد بالا سه ستون برای کنترل گرید تعریف کردم که تعاریف ستون ها بین دو تگ <Grid.ColumnDefinitions> ، و تگ پایانی </Grid.ColumnDefinitions> قرار گرفتن.
هرستون توسط دستور <ColumnDefinition></ColumnDefinition> مشخص میشه و هر دستور <ColumnDefinition></ColumnDefinition> به معنی وجود یک ستون به عنوان ستون های گرید می باشد.
 
 
مثال :
 
کد بالا رو داریم و من فقط برای شفاف شدن یه مثال میزنم اول کد زیرو ببینید
 
کد PHP:
<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="235.689" Width="453.357">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <TextBlock HorizontalAlignment="Left" Margin="48,86,0,0" TextWrapping="Wrap" Text="ستون اول" VerticalAlignment="Top"/>
        <TextBlock HorizontalAlignment="Left" Margin="53,86,0,0" TextWrapping="Wrap" Text="ستون دوم" VerticalAlignment="Top" Grid.Column="1"/>
        <TextBlock HorizontalAlignment="Left" Margin="40,86,0,0" TextWrapping="Wrap" Text="ستون سوم" VerticalAlignment="Top" RenderTransformOrigin="7.667,-0.25" Grid.Column="2"/>
 
    </Grid>
</Window>  
خب من برای هر ستون با استفاده از تگ TextBlock متنی رو برای هر ستون با خاصیت های متفاوت به کنترل گریدم اضافه کردم که نتیجۀ کد بالا به این شکل خواهد شد 
 
 
 
نتیجه این که ما میتونیم کنترل های دیگه ای رو به کنترل های دیگه در wpf اضافه کنیم و از این نظر مشکلی نخواهد بود
 
ادامۀ همین موضوع (کنترل گرید) ، در پست های بعدی انشاالله ...

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 خاصیت Content ها
در پست قبلی دربارۀ Content توضیحاتی دادم خب در این پست کمی بیشتر با خاصیت هاشون آشنا میشید
 
هر کنترل محتوا، دارای خاصتی به نام Content هست. این خاصیت در برگیرنده عناصری خواهد بود که به عنوان محتوای کنترل مورد نظر شناخته میشه.
به طور کلی خاصیت Content در کنترل های محتوا، می تواند شامل دو دسته کلی زیر از عناصر WPF باشد :
 
 
الف) دسته اول عناصری هستند که از کلاس UIElement ، ارث بری نمی کنند، در این موارد، متد ToString فراخوانی شده تا متن آن عنصر را به عنوان محتوای عنصر مورد نظر قرار دهد.
 
ب) دسته دوم عناصری که از کلاس UIElement ارث بری می کنند، این عناصر در واقع تمامی عناصر ویژوال در WPF را شامل می شوند
کمپایلر از متد OnRender این عناصر استفاده می کند تا قابل نمایش در کنترل محتوا باشد.
 
به کد زیر دقت کنید :
 
کد PHP:
<Window x:Class="Grid.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="this a simple Content" Height="235.689" Width="453.357">
    <Button Content="this a simple Content" HorizontalAlignment="Left" Height="68" VerticalAlignment="Top" Width="268" Margin="80,53,0,0"/>
</Window>  
مثلا : 
کد بالا تنها یک رشته متنی را به عنوان محتوای عنصر Button در نظر گرفته که این نوع از محتوا، از نوع دسته (الف) می باشد.

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 کنترل های Content
در WPF کنترل های بسیاری وجود دارد که علاوه بر قابلیت محتوایی بودن، دارای یک سری خواص کاربردی دیگری هم هستند که می توانند محتویات خودشان را به خوبی مدیریت کنند.
تعدادی از این کنترل ها عبارتند از :
 
کنترل ScrollViewer :
 
این کنترل امکاناتی را در اختیار شما قرار می دهد که بتوانید با آن ها، محتوبات این کنترل را مدیریت کنید. چنانچه محتویات داخلی این کنترل از مقدار فضای موجود بر روی آن بیشتر باشد، کنترل به صورت اتوماتیک Scroll پیدا کرده تا بتواند همه محتویات خود را به خوبی در بر گیرد.
 
کد xaml به شکل زیر است :
 
کد PHP:
<Window x:Class="Grid.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="this a simple Content" Height="235.689" Width="453.357"> 
    <ScrollViewer></ScrollViewer> 
</Window>  
کنترل GroupBox :
 
این کنترل برای گروه بندی تعدادی از کنترل ها به کار می رود.
 
کد xaml :
کد PHP:
    <GroupBox>sample code</GroupBox>  
کنترل TabControl : 
 
همانطور که از اسمش مشخصه این کنترل به فرم موجود در برنامه ممون تب اضافه میکنه یا همون سربرگ به شکل زیر
 
کد PHP:
<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="Grid.Window1" 
    Title="this a simple Content" Height="235.689" Width="453.357"> 
    <TabControl Margin="78,26,103,76" Background="#FFB23434"> 
        <System:Object/> 
        <System:Object/> 
    </TabControl> 
</Window>  
 
در کد بالا یه کنترل TabControl دارم و بهش یه آیتم System:Object اضافه کردم که خروجی به شکل زیر خواهد بود 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:04 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 Content ها در WPF
در تکنولوژی WPF مفهوم عنصر کمی متفاوت با مفهوم کنترل می باشد، به هر چیزی که شما در پنجره های برنامه خود در WPF قرار می دهید، یک عنصر تلقی می شود، در حالی که کنترل ها عناصر ویژه ای هستند که می توانند نسبت به اعمال کاربر، عکس العمل نشان دهند.
 
مثلا می توانند ورودی های کاربر را دریافت کنند، خروجی های برنامه را به کاربر بفرستند و ...
 
کنترل های Content، نمونه خاص دیگری از عناصر در تکنولوژی WPF می باشند که قابلیت دربرگیری و نمایش مقادیری را دارند که ما به آن ها محتوا می گوییم و به کنرل هایی که این خاصیت را شامل می شوند، کنترل های محتوا می گوییم. در واقع هر کنترل محتوا می توانند تنها یک عنصر داخلی را درون خود قرار دهند به همین دلیل، تفاوتی بین کنترل های محتوا و کنترل های کانتینر وجود دارد کنترل های کانتیر می توانند، صفر، یک و یا چندین کنترل را به عنوان کنترل های داخلی و کنترل های فرزند خود در برگیرند.
 
کنترل های کانتینر از کلاس انتزاعی پایه ای به نام Panel ارث بری می کنند، کنترل های محتوا نیز از کلاس انتزاعی به نام ContentControl ارث بری می کنند.
 
کنترل های محتوا به دو دسته تقسیم می شوند:
 
1- دسته اول، کنترل هایی هستند که به آن ها اشاره کردیم، این کنترل ها دارای بخشی به نام Content می باشند که می توانند یک عنصر را به عنوان محتوای خود درون خود نگهداری کنند
این عنصر می تواند یک رشته متنی باشد و یا می تواند مجموعه ای از کنترل های متفاوت بر روی یک کنترل کانتیر باشد.
 
2- دسته دوم، کنترل هایی هستند که علاوه بر داشتن خاصیت کنترل های دسته اول، دارای بخش دیگری به نام Header می باشند که عملی مانند بخش Content را انجام می دهند
از این کنترل ها می توان به کنترل TabItem ، کنترل GroupBox، Expander و ... اشاره کرد که در پست ای بعدی دربارۀ هرکدام صحبت خواهیم کرد.

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:05 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:>> Learning WPF Full <<

 کنترل ScrollViewer
در پست قبلی دربارۀ این کنترل در حد آشنایی صحبت کردم و توضیحی مختصر دادم خدمتتون، در این پست کمی بیشتر با خواص و کدنویسی و نحوۀ کار باهاش آشنا میشید .
 
با یک مثال شروع میکنم : در wpf شما در بعضی اوقات نیاز دارید تا از تعداد زیادی کنترل های مختلف روی فرمتون که لازمۀ کارتونم هست استفاده کنید و اینجاست که باید بتونید همۀ اون ها رو روی فرمتون بدرستی نمایش بدید و در اینجا باید به سراغ کنترل ScrollViewer بیاید تا مشکلتونو روی فرم حل کنه ...
 
این کنترل میتونه با هر عنصری به کار بره، زمانی که محتویات این کنترل از فضای موجود، بیشتر بشه، این کنترل به صورت اتوماتیک، محتویات خودش رو قابل پیمایش کرده و کاربر میتونه با اسکرول کردن، به تمامی محتویات درون کنترل مورد نظر دسترسی داشته باشه .
 
به کد زیر توجه کنید :
 
کد PHP:
<Window x:Class="aaa" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="sample" Height="300" Width="450"> 
    <Grid> 
        <Button VerticalAlignment="Center" HorizontalAlignment="Center"> 
            <ScrollViewer> 
                <StackPanel> 
                    <Image VerticalAlignment="Top" MaxHeight="75" MaxWidth="75" Stretch="Fill" ></Image> 
                    <TextBlock TextAlignment="Center" >لطفا مقداری را وارد کنید</TextBlock> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">name</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">Family</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">Age</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">Country</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">City</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">State</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">P.Code</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">Address</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <StackPanel Orientation="Horizontal"> 
                        <Label MinWidth="50">Phone</Label> 
                        <TextBox MinWidth="120"></TextBox> 
                    </StackPanel> 
                    <Button>Ok</Button> 
                    <Image VerticalAlignment="Top" MaxHeight="75" MaxWidth="75" Stretch="Fill" ></Image> 
                </StackPanel> 
            </ScrollViewer> 
        </Button> 
 
    </Grid> 
</Window>  
کنترل های موجود در کدهای بالا رو توضیح دادم در پست های قبلی ...
 
خب ببینید من 9 تا کنترل TextBox روی فرمم دارم که بدون اگه میخواستم بدون استفاده از ScrollViewer نمایششون بدم مجبور میشدم یا اندازه فرمم رو تغییر بدم که اینم شاید در همون لحظه جزء نیازهای کار من نباشه ، پس در اینجا براحتی با اسکرول کردن تونسم این کارو خیلی قشنگ به پایان ببرم 
 
خروجی به صورت زیر خواهد بود :
 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 25 اردیبهشت 1394  7:05 AM
تشکرات از این پست
دسترسی سریع به انجمن ها