نمایش نتایج 1 تا 40 از 109

نام تاپیک: بحث و گفتگو در مورد تاپیک آموزش WPF

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    نقل قول: بحث و گفتگو در مورد تاپیک آموزش WPF

    سلام
    نقل قول نوشته شده توسط WinFx Developer مشاهده تاپیک
    من منظورتون رو نمیفهمم حتی المقدور استفاده نکنیم ؟ میشه راجب این توضیح بدید یا اینکه متن انگلیسی این رو اینجا بزارید والا تو این یه 8,9 ماهی که دارم با WPF کار میکنم پروژه مینویسم همچین چیزی ندیدم
    شاید بهتر باشه پروژه هایی که نوشتین را یه باز نگری دیگه ای بکنید!

    یکی از مباحثی که در WPF جزء مباحث پایه ای می باشد، بحث Layout هست، که در واقع در این بحث، کنترل های کانتینر مطزح می شوند. جهت اطلاع در مورد کنترل های کانتینر و مباحث Layout به این لینک مراجعه کنید.
    کامل توضیح دادم . نیز بار ها متذکر شدم که انعطاف پذیر ترین و بعترین کنترل کانتینر، کنترل Grid می باشد و به همین دلیل نیز، کنترل پیش فرض فرم ها به عنوان کنترل بیس پنجره ها ( Winds ) ها می باشد.
    شما اگر بتوانید از کنترل های کانتینر و کنترل های دیگری نظیر ScrollViewer به خوبی و به جای خود استفاده کنید، در اکثر مواقع که بیش از 95 درصد موارد ( یا شایدم بیشتر) نیاز به سایز بندی کنترل ها، در WPF نخواهید داشت.
    به یک مثال ساده توجه کنید:



    <Grid>
    <Grid.RowDefinitions>
    <RowDefinition Height="Auto"></RowDefinition>
    <RowDefinition Height="Auto"></RowDefinition>
    <RowDefinition></RowDefinition>
    <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto"></ColumnDefinition>
    <ColumnDefinition ></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <TextBlock Text="Name:" VerticalAlignment="Center"></TextBlock>
    <TextBox Grid.Column="1">enter your name here</TextBox>
    <TextBlock Grid.Row="1" Text="Email:" VerticalAlignment="Center"></TextBlock>
    <TextBox Grid.Row="1" Grid.Column="1">enter your Email here</TextBox>
    <ScrollViewer Grid.Row="2" Grid.ColumnSpan="2">
    <TextBox TextWrapping="Wrap" AcceptsReturn="True">Your Comment</TextBox>
    </ScrollViewer>
    <Button Name="btnSend" Grid.Row="3" Grid.Column="0">send comment</Button>
    </Grid>



    این کد، ساده ترین نمونه ای بود که می تونستم براتون مثال بزنم. از این ساده تر نمیشد. هیچ یک از این کنترل ها، با مقادیر Width و Height مقدار دهی نشده اند. نتیجه این است که فرمی خواهید داشت که در مانتیور های مختلف، با رزولوشن های مختلف به خوبی کار خواهد کرد.

    البته در این بین، دو خاصیت Min و Max برای پروپرتی های Width و height استثنا می باشند. که می توانید از آن ها نیز بهره بیاری در سایز بندی کنترل های خود ببرید.

    در مورد کدی که در شکلی که در پست قبلیتان فرستادید، باید بگم که اشیایی نظیر Ellipse نیز، در ان ها مقادیر Width و height دادن یک امر طبیعی است.
    البته باز هم در روشی که مد نظر شما می باشد، یعنی کدی مانند زیر :

    <Canvas>

    <Ellipse Fill="Red" Width="100" Height="50"/>

    </Canvas>


    از لحاظ حرفه ای بودن یا بهتره گم از لحاظ اصولی بودن غلط است و بهتر است که برای اشیاء از کنترل ViewBox استفاده گردد.
    دلیلش هم این است که این کنترل، اشیاء درون خودش را بر اساس سایزی که خودش دارد Arrange می کند. و در نتیجا با بزرگتر شدن فرم ، کنترل ViewBox نیز بزرگ شده ( از لحاظ سایز) و در نتیجه اشیاء مشا نظیر Ellipse و ... بهتر نمایش داده می شوند. حال اگر این کنترل با کنترل های کانتینری نظیر Grid و ... مخلوط شود، نتیجه همانی خواهد شد که انتظار می رود.


    و در پایان هم ذکر چند نکته به زبان شیرین انگلیسی



    In WPF, layout is determined by the container that you use. Although there are several
    containers to choose from, the “ideal” WPF window follows a few key principles:


    Elements (like controls) should not be explicitly sized. Instead, they grow to fit their
    content. For example, a button expands as you add more text. You can limit controls to
    acceptable sizes by setting a maximum and minimum size.

    Elements do not indicate their position with screen coordinates. Instead, they are
    arranged by their container based on their size, order, and (optionally) other information
    that’s specific to the layout container. If you need to add whitespace between
    elements, you use theMargin property.'


    Tip Hard-coded sizes and positions are evil because they limit your ability to localize your interface, and
    they make it much more difficult to deal with dynamic content.

    نکات دیگری هم در مورد Layout در WPF و کنترل های کانتینر مطرح می باشد که بحث در مورد آن ها از حوصله این تاپیک خارج است

    پ و :
    اگر غلط املایی هست، به بزرگی خودتون ببخشید. 48 ساعته درست نخوابیدم.
    موفق باشید
    مهدی کیانی
    آخرین ویرایش به وسیله Mahdi.Kiani : جمعه 31 خرداد 1387 در 13:57 عصر

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •