ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





صفحه 4 از 4 نخست 1234
نمایش نتایج: از 31 به 35 از 35
  1. #31
    javanr0d
    پاسخگو و راهنما
    تاریخ عضویت
    1970 Jan
    محل سکونت
    VisualStudio
    نوشته ها
    192
    45
    160

    بخش چهارم: Content Controls ( کنترل های محتوا) ( قسمت چهارم)

    ادامه کنترل Scroll Viewer

    کنترل اسکرول با برنامه نویسی :

    همانطور که در بخش قبل دیدیدريال می توانستید با موس و یا با کنترل های جهت نما، کنترل اسکرول خود را مدیریت کنید.
    در این بخش با توابعی آشنا خواهید شد که می توانید توسط آن ها کنترل ScrollViewer را در زمان اجرای برنامه و با کد نویسی مدیریت نمایید.


    نکته :
    این توابع هر کدام دارای دو نسخه می باشند، یکی برای اسکرول عمودی و دیگری برای اسکرول افقی. در اینجا توابع مربوط به اسکرول عمودی و عملکرد آن ها را خواهیم دید و در مورد توابع مروبط به اسکرول افقی تنها نام آن ها ذکر می گردند. چون عملکرد آن ها دقیقا مشابه عملکر نسخه خود برای اسکرول عمودی هستند.

    متد LineUp() :

    عملکر این متد مانند کلیک کردن بر روی علامت جهت نمای بالایی اسکرول عمودی می باشد. پس میزان جا بجایی که توسط این متد انجام می گیرید بستگی به میزان جابجایی توسط علامت جهت نمای بالایی دارد.
    معادل این متد برای نوار اسکرول افقی ، متد LineLeft می باشد.

    متد LineDown() :
    عملکر این متد مانند کلیک کردن بر روی علامت جهت نمای پایینی اسکرول عمودی می باشد. پس میزان جا بجایی که توسط این متد انجام می گیرید بستگی به میزان جابجایی توسط علامت جهت نمای بالایی دارد.
    معادل این متد برای نوار اسکرول افقی ، متد LineRight می باشد


    متد PageUp :

    عملکر این متد مانند کلیک کردن بر روی فاصله بین علامت جهت نمای بالایی و دستگیره اسکرول در اسکرول عمودی می باشد.
    معادل این متد برای نوار اسکرول افقی ، متد PageLeft می باشد

    متد PageDown : عملکر این متد مانند کلیک کردن بر روی فاصله بین علامت جهت نمای پایینی و دستگیره اسکرول در اسکرول عمودی می باشد.
    معادل این متد برای نوار اسکرول افقی ، متد PageRight می باشد

    متد ScrollToHome :

    این متد اسکرول را به پایین ترین قسمت ممکن انتقال می دهد.
    معادل این متد برای نوار اسکرول افقی ، ScrollToLeftEnd می باشد.

    متد ScrollToEnd :

    این متد اسکرول را به بالاترین قسمت ممکن انتقال می دهد.
    معادل این متد برای نوار اسکرول افقی ، متد ScrollToRightEnd می باشد.

    متد ScrollToVerticalOffset :
    این متد بر اساس مقداری که به عنوان آرگومان می گیرد عمل اسکرول را انجام می دهد.
    معادل این متد برای نوار اسکرول افقی؛ متد ScrollToHorizontalOffset می باشد

    قطعه کد زیر نحوه استفاده از این متد ها را نشان می دهد :
    کد HTML:
    <Window x:Class="contentControls.ProgrammingScrollViewer"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ProgrammingScrollViewer" Height="300" Width="650">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition  Height="Auto"></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="AUto"></RowDefinition>
            </Grid.RowDefinitions>
     
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
     
     
            <WrapPanel Margin="10" Grid.ColumnSpan="5" Orientation="Horizontal">
                <Button Margin="1" Tag="LU" Click="ScrollButtons_Click">LineUp()</Button>
                <Button Margin="1" Tag="LD" Click="ScrollButtons_Click">LineDown()</Button>
                <Button  Margin="1" Tag="PU" Click="ScrollButtons_Click">PageUp()</Button>
                <Button Margin="1" Tag="PD" Click="ScrollButtons_Click">PageDown()</Button>
                <Button Margin="1" Tag="TE" Click="ScrollButtons_Click">ScrollToEnd()</Button>
                <Button Margin="1" Tag="TH" Click="ScrollButtons_Click">ScrollToHome()</Button>
                <Button  Margin="1" Tag="TOV" Click="ScrollButtons_Click">ScrollToVerticalOffset  (50)</Button>
            </WrapPanel>
     
            <ScrollViewer Grid.Row="2" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                Normal Images 
                </TextBlock>
            </ScrollViewer>
             
            <ScrollViewer Grid.Row="2" Grid.Column="1" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After 2 LineDown And 2 LineRight
                </TextBlock>
            </ScrollViewer>
            <ScrollViewer Grid.Row="2" Grid.Column="2" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After 2 PageDown And 2 PageRight
                </TextBlock>
            </ScrollViewer>
            <ScrollViewer Grid.Row="2" Grid.Column="3" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After ScrollToEnd And ScrollToRightEnd
                </TextBlock>
            </ScrollViewer>
            <ScrollViewer Grid.Row="2" Grid.Column="4" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After ScrollToVerticalOffset (50) And ScrollToHorizontalOffset(50)
                </TextBlock>
            </ScrollViewer>
     
            <Button Margin="5" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
     
            <Button Margin="5"  Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll2" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
            <Button Margin="5" Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
     
            <Button Margin="5" Grid.Row="1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll4" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
             
            <Button Margin="5" Grid.Row="1" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll5" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
            <WrapPanel Margin="10" Grid.ColumnSpan="5" Grid.Row="3" Orientation="Horizontal">
                <Button Margin="1" Tag="LL" Click="ScrollButtons_Click">LineLeft()</Button>
                <Button Margin="1" Tag="LR" Click="ScrollButtons_Click">LineRight()</Button>
                <Button  Margin="1" Tag="PL" Click="ScrollButtons_Click">PageLeft()</Button>
                <Button Margin="1" Tag="PR" Click="ScrollButtons_Click">PageRight()</Button>
                <Button Margin="1" Tag="TL" Click="ScrollButtons_Click">ScrollToLeftEnd()</Button>
                <Button Margin="1" Tag="TR" Click="ScrollButtons_Click">ScrollToRightEnd()</Button>
                <Button  Margin="1" Tag="TOH" Click="ScrollButtons_Click">ScrollToHorizontalOffs  et(50)</Button>
            </WrapPanel>
        </Grid>
    </Window>
    در قطعه کد فوق، دکمه هایی برای کنترل متد ها برای اسکرول عمودی و نیز دکمه هایی برای کنترل متد ها در اسکرول افقی بر روی دو کنترل WrapPanel قرار گرفته اند. در این مثال نحوه به کارگیری کنترل های کانتینر جهت چیدمان عناصر WPF به خوبی مشخص است.
  2. 1
  3. #32
    javanr0d
    پاسخگو و راهنما
    تاریخ عضویت
    1970 Jan
    محل سکونت
    VisualStudio
    نوشته ها
    192
    45
    160

    بخش چهارم: Content Controls ( کنترل های محتوا) ( قسمت چهارم)

    بخش چهارم: Content Controls ( کنترل های محتوا) ( قسمت چهارم)
    ادامه کنترل Scroll Viewer

    کنترل اسکرول با برنامه نویسی :

    همانطور که در بخش قبل دیدیدريال می توانستید با موس و یا با کنترل های جهت نما، کنترل اسکرول خود را مدیریت کنید.
    در این بخش با توابعی آشنا خواهید شد که می توانید توسط آن ها کنترل ScrollViewer را در زمان اجرای برنامه و با کد نویسی مدیریت نمایید.


    نکته :
    این توابع هر کدام دارای دو نسخه می باشند، یکی برای اسکرول عمودی و دیگری برای اسکرول افقی. در اینجا توابع مربوط به اسکرول عمودی و عملکرد آن ها را خواهیم دید و در مورد توابع مروبط به اسکرول افقی تنها نام آن ها ذکر می گردند. چون عملکرد آن ها دقیقا مشابه عملکر نسخه خود برای اسکرول عمودی هستند.

    متد LineUp() :

    عملکر این متد مانند کلیک کردن بر روی علامت جهت نمای بالایی اسکرول عمودی می باشد. پس میزان جا بجایی که توسط این متد انجام می گیرید بستگی به میزان جابجایی توسط علامت جهت نمای بالایی دارد.
    معادل این متد برای نوار اسکرول افقی ، متد LineLeft می باشد.

    متد LineDown() :
    عملکر این متد مانند کلیک کردن بر روی علامت جهت نمای پایینی اسکرول عمودی می باشد. پس میزان جا بجایی که توسط این متد انجام می گیرید بستگی به میزان جابجایی توسط علامت جهت نمای بالایی دارد.
    معادل این متد برای نوار اسکرول افقی ، متد LineRight می باشد


    متد PageUp :

    عملکر این متد مانند کلیک کردن بر روی فاصله بین علامت جهت نمای بالایی و دستگیره اسکرول در اسکرول عمودی می باشد.
    معادل این متد برای نوار اسکرول افقی ، متد PageLeft می باشد

    متد PageDown : عملکر این متد مانند کلیک کردن بر روی فاصله بین علامت جهت نمای پایینی و دستگیره اسکرول در اسکرول عمودی می باشد.
    معادل این متد برای نوار اسکرول افقی ، متد PageRight می باشد

    متد ScrollToHome :

    این متد اسکرول را به پایین ترین قسمت ممکن انتقال می دهد.
    معادل این متد برای نوار اسکرول افقی ، ScrollToLeftEnd می باشد.

    متد ScrollToEnd :

    این متد اسکرول را به بالاترین قسمت ممکن انتقال می دهد.
    معادل این متد برای نوار اسکرول افقی ، متد ScrollToRightEnd می باشد.

    متد ScrollToVerticalOffset :
    این متد بر اساس مقداری که به عنوان آرگومان می گیرد عمل اسکرول را انجام می دهد.
    معادل این متد برای نوار اسکرول افقی؛ متد ScrollToHorizontalOffset می باشد

    قطعه کد زیر نحوه استفاده از این متد ها را نشان می دهد :
    کد HTML:
    <Window x:Class="contentControls.ProgrammingScrollViewer"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ProgrammingScrollViewer" Height="300" Width="650">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition  Height="Auto"></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="AUto"></RowDefinition>
            </Grid.RowDefinitions>
     
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
     
     
            <WrapPanel Margin="10" Grid.ColumnSpan="5" Orientation="Horizontal">
                <Button Margin="1" Tag="LU" Click="ScrollButtons_Click">LineUp()</Button>
                <Button Margin="1" Tag="LD" Click="ScrollButtons_Click">LineDown()</Button>
                <Button  Margin="1" Tag="PU" Click="ScrollButtons_Click">PageUp()</Button>
                <Button Margin="1" Tag="PD" Click="ScrollButtons_Click">PageDown()</Button>
                <Button Margin="1" Tag="TE" Click="ScrollButtons_Click">ScrollToEnd()</Button>
                <Button Margin="1" Tag="TH" Click="ScrollButtons_Click">ScrollToHome()</Button>
                <Button  Margin="1" Tag="TOV" Click="ScrollButtons_Click">ScrollToVerticalOffset  (50)</Button>
            </WrapPanel>
     
            <ScrollViewer Grid.Row="2" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                Normal Images 
                </TextBlock>
            </ScrollViewer>
             
            <ScrollViewer Grid.Row="2" Grid.Column="1" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After 2 LineDown And 2 LineRight
                </TextBlock>
            </ScrollViewer>
            <ScrollViewer Grid.Row="2" Grid.Column="2" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After 2 PageDown And 2 PageRight
                </TextBlock>
            </ScrollViewer>
            <ScrollViewer Grid.Row="2" Grid.Column="3" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After ScrollToEnd And ScrollToRightEnd
                </TextBlock>
            </ScrollViewer>
            <ScrollViewer Grid.Row="2" Grid.Column="4" Margin="1,1,1,5">
                <TextBlock TextWrapping="Wrap" Background="BurlyWood">             
                After ScrollToVerticalOffset (50) And ScrollToHorizontalOffset(50)
                </TextBlock>
            </ScrollViewer>
     
            <Button Margin="5" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
     
            <Button Margin="5"  Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll2" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
            <Button Margin="5" Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
     
            <Button Margin="5" Grid.Row="1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll4" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
             
            <Button Margin="5" Grid.Row="1" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center">
                <ScrollViewer Name="btnScroll5" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
     
                    <Image VerticalAlignment="Top"  Stretch="Fill"  Source="WPF.jpg"></Image>
     
                </ScrollViewer>
            </Button>
            <WrapPanel Margin="10" Grid.ColumnSpan="5" Grid.Row="3" Orientation="Horizontal">
                <Button Margin="1" Tag="LL" Click="ScrollButtons_Click">LineLeft()</Button>
                <Button Margin="1" Tag="LR" Click="ScrollButtons_Click">LineRight()</Button>
                <Button  Margin="1" Tag="PL" Click="ScrollButtons_Click">PageLeft()</Button>
                <Button Margin="1" Tag="PR" Click="ScrollButtons_Click">PageRight()</Button>
                <Button Margin="1" Tag="TL" Click="ScrollButtons_Click">ScrollToLeftEnd()</Button>
                <Button Margin="1" Tag="TR" Click="ScrollButtons_Click">ScrollToRightEnd()</Button>
                <Button  Margin="1" Tag="TOH" Click="ScrollButtons_Click">ScrollToHorizontalOffs  et(50)</Button>
            </WrapPanel>
        </Grid>
    </Window>

    در قطعه کد فوق، دکمه هایی برای کنترل متد ها برای اسکرول عمودی و نیز دکمه هایی برای کنترل متد ها در اسکرول افقی بر روی دو کنترل WrapPanel قرار گرفته اند. در این مثال نحوه به کارگیری کنترل های کانتینر جهت چیدمان عناصر WPF به خوبی مشخص است.
  4. 1
  5. #33
    javanr0d
    پاسخگو و راهنما
    تاریخ عضویت
    1970 Jan
    محل سکونت
    VisualStudio
    نوشته ها
    192
    45
    160

    بخش چهارم: Content Controls ( کنترل های محتوا) ( قسمت آخر)

    کنترل Expander :
    این کنترل بدون شک یکی از کنترل های پر کاربردی است که برنامه نویسان همیشه به دنبال آن جهت استفاده در برنامه های خود بوده اند. از زمان ظهور دات نت، این کنترل به صورت پیش فرض در ویژوال استودیو وجود نداشت و برنامه نویسان مجبور بودند یا خود اقدام به ایجاد چنین کنترلی نمایند و یا به سمت کنترل های نوشته شده توسط اشخاص و شرکت های ثالث روی آورند.
    ماکروسافت در ویژوال استودیو 2008 و در تکنولوژی WPF ، این کنترل را برای استفاده کاربران قرار داد. این کنترل دارای دو بخش می باشد، بخش هدر و یک بخش محتوا. بخش هدر شامل یک دکمه که غالبا به صورت فلش است، می باشد. کاربر با کلیک کردن بر روی این دکمه می تواند بخش Content را مخفی کند و یا آن را از حالت مخفی خارج نماید.

    بخش Content این کنترل نیز مانند همه عناصر WPF می تواند شامل هر عنصر دیگری باشد.
    نحوه استفاده از این کنترل بسیار ساده می باشد. با استفاده از قطعه کد زیر می توانید یک کنترل Expander ایجاد نمایید:
    کد HTML:
    <Expander Header="sample text header">sample text content</Expander>
    قطعه کد فوق ساده ترین حالت تعریف یک کنترل Expander می باشد که شامل یک متن ساده به عنوان هدر و یک متن ساده دیگر به عنوان محتوا می باشد. چنانچه بخواهید از هدر و محتواهای پیچیده تر و پیشرفته تر و سفارشی خود در کنترل Expander استفاده کنید، بایستی کنترل Expander را به صورت زیر تعریف کنید:
    کد HTML:
    <Expander >
        <Expander.Header>
            .
            .
            .
        </Expander.Header>
        <Expander.Content>
            .
            .
            .
        </Expander.Content>
    </Expander>
    در این حالت میتوانید با قرار دادن یک کنترل کانتیر در بخش مورد نظر، اقدام به ایجاد هدر و محتواهای مورد نظر خود کنید.
    جهت در ک بیشتر به مثال زیر توجه کنید :

    کد HTML:
    <Window x:Class="contentControls.ExpnaderControl"
        xmlns="<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" target="_blank">http://schemas.microsoft.com/winfx/2...l/presentation</a>"
        xmlns:x="<a href="http://schemas.microsoft.com/winfx/2006/xaml" target="_blank">http://schemas.microsoft.com/winfx/2006/xaml</a>"
        Title="ExpnaderControl" Height="400" Width="350">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition ></RowDefinition>
                <RowDefinition ></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition ></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
      
            <!-- Define Expanders-->
            <Expander Header="simple expander" BorderBrush="Green" BorderThickness="2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">sample content</Expander>
      
            <Expander  Margin="5" Grid.Row="0" Grid.Column="1" IsExpanded="True" HorizontalContentAlignment="Left" BorderBrush="Brown" BorderThickness="3">
                <Expander.Header>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Padding="3">Country GroupBox</TextBlock>
                        <Image Source=".\Images\banner.png" MaxWidth="20" MaxHeight="20"></Image>
                    </StackPanel>
                </Expander.Header>
                <Expander.Content>
                    <GroupBox  Margin="10" Padding="10" VerticalAlignment="Top">
      
                        <StackPanel>
                            <RadioButton  Margin="3"  Name="rbtn6" IsChecked="True">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\Iran.ico" MaxWidth="20" MaxHeight="20"/>
                                    <TextBlock>(Iran)</TextBlock>
                                </StackPanel>
                            </RadioButton>
                            <RadioButton   Margin="3" Name="rbtn7">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\Albania.ico" MaxWidth="20" MaxHeight="20"/>
                                    <TextBlock>(Albani)</TextBlock>
                                </StackPanel>
                            </RadioButton>
                            <RadioButton Margin="3" Name="rbtn8">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\Hong-Kong.ico" MaxWidth="20" MaxHeight="20"/>
                                    <TextBlock>(Hong-Kong)</TextBlock>
                                </StackPanel>
                            </RadioButton>
                            <RadioButton Margin="3" Name="rbtn9">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\Italy.ico" MaxWidth="20" MaxHeight="20"/>
                                    <TextBlock>(Italy)</TextBlock>
                                </StackPanel>
                            </RadioButton>
                        </StackPanel>
                    </GroupBox>
                </Expander.Content>
            </Expander>
            <Expander IsExpanded="True" Grid.Row="1" Header="Gradient Expander" BorderBrush="Red" BorderThickness="2">
                <Expander.Background>
                    <RadialGradientBrush>
                        <RadialGradientBrush.GradientStops>
                            <GradientStop Color="Green" Offset="0"/>
                            <GradientStop Color="Wheat" Offset="1"/>
                        </RadialGradientBrush.GradientStops>
                    </RadialGradientBrush>
      
                </Expander.Background>
                <Expander.Content>
                    <GroupBox BorderBrush="Brown" BorderThickness="3" Margin="10" Padding="10" VerticalAlignment="Top">
      
                        <StackPanel>
                            <RadioButton Margin="3" Name="rbtn1" IsChecked="True" >
                                <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                            </RadioButton>
                            <RadioButton Margin="3" Name="rbtn2">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                </StackPanel>
                            </RadioButton>
                            <RadioButton Margin="3" Name="rbtn3">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                </StackPanel>
                            </RadioButton>
                            <RadioButton Margin="3" Name="rbtn4">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                </StackPanel>
                            </RadioButton>
                            <RadioButton Margin="3" Name="rbtn5">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                                </StackPanel>
                            </RadioButton>
                        </StackPanel>
                    </GroupBox>
                </Expander.Content>
            </Expander>
            <Expander BorderBrush="CadetBlue" BorderThickness="3" IsExpanded="True" Grid.Row="1" Grid.Column="1" Header="Larg Content text">
                <ScrollViewer>
                    <TextBlock TextWrapping="Wrap">
      
                        From WikiPedia
                        he Windows Presentation Foundation (or WPF), 
                        formerly code-named Avalon, is the graphical subsystem feature of the .NET Framework 3.0 
                        (formerly called WinFX)[1] and is directly related to XAML.[2] It is pre-installed in Windows
                        Vista,[3] the latest version of the Microsoft Windows operating system. WPF is also available 
                        for installation on Windows XP SP2 and Windows Server 2003. It provides a consistent programming
                        model for building applications and provides a clear separation between the UI and the business logic.
                        A WPF application can be deployed on the desktop or hosted in a web browser. It also enables rich control, 
                        design, and development of the visual aspects of Windows programs. It aims to unify a host of application
                        services: user interface, 2D and 3D drawing, fixed and adaptive documents, advanced typography, vector graphics,
                        raster graphics, animation, data binding, audio and video. Although WinForms will continue to be widely used,
                        WPF is now the preferred choice for developing line of business applications, especially since the release of
                        the .NET Framework 3.5, Visual Studio 2008, and Expression Blend[4].                   
    Microsoft Silverlight is a web-based subset of WPF. During development it was named WPF/E, which stood for "Windows Presentation 
                        Foundation/Everywhere". The Silverlight subset enables Flash-like web and mobile applications with the same code
                        as Windows .NET applications. 3D features are not supported, but XPS and vector-based drawing are included.
    The architecture of Windows Presentation Foundation spans across both managed code and native code components; however, the public 
                        API exposed is only available via managed code. While the majority of WPF is in managed code, the composition 
                        engine which renders the WPF applications is a native component. It is named as Media Integration Layer (MIL)
                        and resides as milcore.dll. It interfaces directly with DirectX and provides basic support for 2D and 3D surfaces
                        , timer-controlled manipulation of contents of a surface with a view to exposing animation constructs at a higher 
                        level, and compositing the individual elements of a WPF application into a final 3D "scene" that represents 
                        the UI of the application and rendering it to the screen.[5][6] The media codecs are also implemented in unmanaged
                        code, and are shipped as windowscodecs.dll.[5] In the managed world, PresentationCore (presentationcore.dll) provides 
                        a managed wrapper for MIL as well as implements the core services for WPF,[5] including a property system 
                        that is aware of the dependencies between the setters and consumers of the property, a message dispatching system by
                        means of a Dispatcher object to implement a specialized event system and services which can implement a layout system
                        such as measurement for UI elements.[6] PresentationFramework (presentationframework.dll) implements the end-user 
                        presentational features, including layouts, time-dependent, story-board based animations, and data binding.[6]
    WPF exposes a property system for objects which inherit from DependencyObject, that is aware of the dependencies between the consumers 
                        of the property, and can trigger actions based on changes in properties. Properties can be either hard coded values
                        or expressions, which are specific expressions that evaluate to a result. In the initial release, however, the set of 
                        expressions supported is closed.[6] The value of the properties can be inherited from parent objects as well. WPF properties
                        support change notifications, which invoke bound behaviors whenever some property of some element is changed. Custom behaviors 
                        can be used to propagate a property change notification across a set of WPF objects. This is used by the layout system to trigger
                        a recalculation of the layout on property-changes, thus exposing a declarative programming style for WPF, whereby almost everything, 
                        from setting colors and positions to animating elements can be achieved by setting properties.[6] This allows WPF applications to be written 
                        in XAML, which is a declarative mark-up language, by binding the keywords and attributes directly to WPF classes and properties.
    The UI elements of an WPF application is maintained as a class of Visual objects. Visual objects provide a managed interface to a composition tree which 
                        is maintained by Media Integration Layer (MIL). Each element of WPF creates and adds one or more composition nodes to the tree. The composition
                        nodes contain rendering instructions, such as clipping and transformation instructions, along with other visual attributes. Thus the entire application
                        is represented as a collection of composition nodes, which are stored in a buffer in the system memory. Periodically, MIL walks the tree and executes the
                        rendering instructions in each node, thus compositing each element on to a DirectX surface, which is then rendered on screen. MIL uses the painter's algorithm, 
                        where all the components are rendered from back of the screen to the front, which allows complex effects like transparencies to be easily achieved. This rendering
                        process is hardware accelerated using the GPU.[6] The composition tree is cached by MIL, creating a retained mode graphics, so that any changes to the composition tree
                        needs only to be incrementally communicated to MIL. This also frees the applications of managing repainting the screen, MIL can do that itself as it has all the information 
                        necessary. Animations can be implemented as time-triggered changes to the composition tree. On the user visible side, animations are specified declaratively, by setting some
                        animation effect to some element via a property and specifying the duration. The code-behind updates the specific nodes of the tree, via Visual objects, to represent both the
                        intermediate states at specified time intervals as well as the final state of the element. MIL will render the changes to the element automatically.
    All WPF applications start with two threads: one for managing the UI and another background thread for handling rendering and repainting.[7] Rendering and repainting is managed by WPF itself, 
                        without any developer intervention. The UI thread houses the Dispatcher (via an instance of DispatcherObject), which maintains a queue of UI operations that need to be performed
                        (as a tree of Visual objects), sorted by priority. UI events, including changing a property that affects the layout, and user interaction events raised are queued up in the dispatcher,
                        which invokes the handlers for the events. Microsoft recommends that the event handlers only update the properties to reflect new content for application responsiveness; the new content 
                        be generated or retrieved in a background thread.[7] The render thread picks up a copy of the visual tree and walks the tree calculating which components will be visible and renders them 
                        to Direct3D surfaces. The render thread also caches the visual tree, so only changes to the tree need to be communicated, which will result in updating only the changed pixels. WPF supports 
                        an extensible layout model. Layout is divided into two phases: Measure and Arrange. The Measure phase recursively calls all elements and determine the size they will take. In the Arrange phase,
                        the child elements are recursively arranged by their parents, invoking the layout algorithm of the layout module in use.[6][8]
                    </TextBlock>
                </ScrollViewer>
            </Expander>
        </Grid>
    </Window>
    کد فوق، چهار کنترل Expander ایجاد می کند. هر کنترل Expander دارای هدر و محتوای خاص خود می باشد.
    همانطور که مشاهده می کنید، هر یک از کنترل های Expander در شکل فوق به نحو دلخواهی ساز ماندهی شده اند و دارای مقادیر هدر و محتوای خود می باشند.

    خاصیت IsExpanded :
    این خاصیت حالت کنترل Expander را نشان می دهد. به طور کلی کنترل Expander دارای دو حالت می باشد:
    حالت اول: زمانی که مقدار خاصیت IsExpanded را برابر با False قرار می دهید. در این حالت، بخش محتوای کنترل Expander به صورت مخفی در خواهد آمد.
    حالت دوم: این حالت عکس حالت اول می باشد. در این حالت بخش محتوای کنترل Expander در حالت نمایش می باشد.
    نکته: مقدار پیش فرض خاصیت IsExpanded برابر با False می باشد.
    **
    نحوه استفاده از این خاصیت در کد XAML به صوزت زیر می باشد:
    کد HTML:
    <Expander . . . IsExpanded="True"> . . . </Expander>
    مشخص کردن جهت Expand در کنترل Expander :
    کنترل Expander دارای خاصیتی به نام ExpanderDirection می باشد که جهت باز و بسته شدن کنترل Expander را مشخص می کند. این خاصیت داراری چهار مقدار Down، Up، Left و Right می باشد که مقدار پیش فرض آن برابرا با Down می باشد.
    نحوه به کار بردن این خاصیت در کد XAML به صورت زیر می باشد:
    کد HTML:
    <Expander ExpandDirection="Up" . . .>
                .
    .
    .
    .
    </Expander>
    خاصیت FlowDirection
    این خاصیت دارای دو مقدار LeftToRight و RightToLeft می باشد که مقدار LeftToRight حالت پیش فرض آن می باشد. این خاصیت نحوه چیدمان کنترل Epander را نشان می دهد. مقدار RightToLeft برای زبان هایی همچون فارسی، عربی و ... که چیدمان الفبای آن ها از سمت راست می باشد، مناسب می باشد.
  6. 1
  7. #34
    javanr0d
    پاسخگو و راهنما
    تاریخ عضویت
    1970 Jan
    محل سکونت
    VisualStudio
    نوشته ها
    192
    45
    160

    بخش چهارم: Content Controls ( کنترل های محتوا) ( قسمت ششم)

    کنترل TabControl :
    با نام این کنترل و عملکرد این کنترل در دات نتفریم ورک 2.0 آشنا شدید. در این جا قصد صحبت کردن در مورد این کنترل را ندارم، و بیشتر به شرح خاصیت TabItem از این کنترل خواهیم پرداخت. ولی به عنوان اشاره کوچکی در مورد ساخت این کنترل در WPF به کد زیر دقت کنید ( کد نوشته شده توسط کاربر sajadlove )
    کد HTML:
    <TabControl Margin="5">
    <TabItem Header="TabOne">
    <StackPanel>
    <CheckBox Margin="3">Name</CheckBox>
    <CheckBox Margin="3">Family</CheckBox>
    <Button Margin="3">Go</Button>
    </StackPanel>
    </TabItem>
    <TabItem Header="TabTwo">
    <StackPanel>
    <CheckBox Margin="3">SettingOne</CheckBox>
    <CheckBox Margin="3">SettingTwo</CheckBox>
    <Button Margin="3">Go</Button>
    </StackPanel>
    </TabItem>
    </TabControl>
    --------------------------------------------------------------------------------------------------
    خاصیت TabItem :
    خاصیت TabItem شبیه به TabPage در کنترل TabControl در دات نت فریم ورک 2.0 می باشد. در واقع هر TabItem یک صفحه را در کنترل tabControl مشخص می کند. عنصر TabItem نیزاز ان دسته از عناصری است که دارای خاصیت header می باشد. همانند GroupBox خاصیت Header از عنصر TabItem نیز می تواند، شامل یک متن ساده باشد و یا اینکه شامل یک محتوای پیچیده تشکیل شده از چندین عنصر باشد.
    به کد زیر دقت کنید ...(نوشته شده توسط کاربر sajadlove)
    کد HTML:
    <Grid>
    <TabControl Margin="5">
    <TabItem Header="TabOne">
    <TabItem.Background>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="LightSteelBlue" Offset="0"/>
    <GradientStop Color="LightBlue" Offset="1" />
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TabItem.Background>
    <Border BorderBrush="DarkBlue" BorderThickness="2" CornerRadius="5">
    <StackPanel>
      
    <StackPanel.Background>
      
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="LightSteelBlue" Offset="0"/>
    <GradientStop Color="LightBlue" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </StackPanel.Background>
    <CheckBox Margin="3">SettingOne</CheckBox>
    <CheckBox Margin="3">SettingTwo</CheckBox>
    <Button Margin="3">Go</Button>
    </StackPanel>
    </Border>
    </TabItem>
    <TabItem>
    <TabItem.Header>
    <StackPanel>
    <TextBlock>TabTwo</TextBlock>
    </StackPanel>
    </TabItem.Header>
    <StackPanel>
    <CheckBox Margin="3">SettingOne</CheckBox>
    <CheckBox Margin="3">SettingTwo</CheckBox>
    <Button Margin="3">Go</Button>
    </StackPanel>
    </TabItem>
    </TabControl>
    </Grid>
    حال به مثال جامع تر زیر که تر کیب، پست های قبلی با مطالب این پست می باشد نیز توجه فر مایید..
    کد HTML:
    <TabControl Margin="10">
    <TabItem Header="Simpe Header">
    <TextBlock TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18">Without Content</TextBlock>
    </TabItem>
    <TabItem >
    <TabItem.Header>
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20" Margin="0,0,2,0"></Image>
    <TextBlock Margin="5,0,5,0"> ( Score Tab Page )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Green" Offset=".5"/>
    <GradientStop Color="Black" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    </StackPanel>
    </TabItem.Header>
    <GroupBox Margin="10" Padding="10" VerticalAlignment="Top">
      
    <GroupBox.Header>
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20" Margin="0,0,2,0"></Image>
    <TextBlock Margin="5,0,5,0"> ( Select Score )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Bisque" Offset=".5"/>
    <GradientStop Color="Black" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    </StackPanel>
    </GroupBox.Header>
    <StackPanel>
    <RadioButton Margin="3" Name="rbtn1" IsChecked="True" >
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </RadioButton>
      
    <RadioButton Margin="3" Name="rbtn2">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn3">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn4">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn5">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    </StackPanel>
    </GroupBox>
    </TabItem>
    <TabItem >
    <TabItem.Header>
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>
    <TextBlock Margin="5,0,5,0"> ( Country Page )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Gray" Offset=".5"/>
    <GradientStop Color="Red" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    </StackPanel>
    </TabItem.Header>
    <GroupBox Margin="10" Padding="10" VerticalAlignment="Top">
    <GroupBox.Header>
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>
    <TextBlock Margin="5,0,5,0"> ( Select Country )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Gray" Offset=".5"/>
    <GradientStop Color="Red" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    </StackPanel>
    </GroupBox.Header>
    <StackPanel>
    <RadioButton Margin="3" Name="rbtn6" IsChecked="True">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Iran.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Iran)</TextBlock>
    </StackPanel>
    </RadioButton>
    <RadioButton   Margin="3" Name="rbtn7">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Albania.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Albani)</TextBlock>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn8">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Hong-Kong.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Hong-Kong)</TextBlock>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn9">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Italy.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Italy)</TextBlock>
    </StackPanel>
    </RadioButton>
    </StackPanel>
    </GroupBox>
    </TabItem>
    <TabItem >
    <TabItem.Header>
    <StackPanel>
    <Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20" Margin="0,0,2,0"></Image>
    <TextBlock Margin="5,0,5,0"> ( Score )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Bisque" Offset=".5"/>
    <GradientStop Color="Black" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    <Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>
    <TextBlock Margin="5,0,5,0"> ( Country )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Gray" Offset=".5"/>
    <GradientStop Color="Red" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    </StackPanel>
    </TabItem.Header>
    <Grid>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto"></ColumnDefinition>
    <ColumnDefinition Width="Auto"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <GroupBox Margin="10" Padding="10" VerticalAlignment="Top">
      
    <GroupBox.Header>
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20" Margin="0,0,2,0"></Image>
    <TextBlock Margin="5,0,5,0"> ( Select Score )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Bisque" Offset=".5"/>
    <GradientStop Color="Black" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    </StackPanel>
    </GroupBox.Header>
    <StackPanel>
    <RadioButton Margin="3" Name="rbtn10" IsChecked="True" >
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </RadioButton>
      
    <RadioButton Margin="3" Name="rbtn11">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn12">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn13">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn14">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
    </StackPanel>
    </RadioButton>
    </StackPanel>
    </GroupBox>
    <GroupBox Grid.Column="1" Margin="10" Padding="10" VerticalAlignment="Top">
    <GroupBox.Header>
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>
    <TextBlock Margin="5,0,5,0"> ( Select Country )
    <TextBlock.Foreground>
    <LinearGradientBrush>
    <LinearGradientBrush.GradientStops>
    <GradientStop Color="Brown" Offset="0"/>
    <GradientStop Color="Gray" Offset=".5"/>
    <GradientStop Color="Red" Offset="1"/>
    </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    </TextBlock.Foreground>
    </TextBlock>
    </StackPanel>
    </GroupBox.Header>
    <StackPanel>
    <RadioButton Margin="3" Name="rbtn15" IsChecked="True">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Iran.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Iran)</TextBlock>
    </StackPanel>
    </RadioButton>
    <RadioButton   Margin="3" Name="rbtn16">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Albania.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Albani)</TextBlock>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn17">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Hong-Kong.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Hong-Kong)</TextBlock>
    </StackPanel>
    </RadioButton>
    <RadioButton Margin="3" Name="rbtn18">
    <StackPanel Orientation="Horizontal">
    <Image Source=".\Images\Italy.ico" MaxWidth="20" MaxHeight="20"/>
    <TextBlock>(Italy)</TextBlock>
    </StackPanel>
    </RadioButton>
    </StackPanel>
    </GroupBox>
    </Grid>
    </TabItem>
      
      
    </TabControl>
  8. 1
  9. #35
    javanr0d
    پاسخگو و راهنما
    تاریخ عضویت
    1970 Jan
    محل سکونت
    VisualStudio
    نوشته ها
    192
    45
    160

    بخش چهارم: Content Controls ( کنترل های محتوا) ( قسمت پنجم)

    کنترل GroupBox :
    همانطور که گفته شد، بعضی از کنترل های محتوا دارای دو بخش برای قرار دادن کنترل ها به عنوان محتوای خود دارند. یکی از این بخش ها همانطور که در کنترل های قبل نیز دیدید، خاصیت Content می باشد. دیگر خاصیتی که می تواند به عنوان محتوا به کار برود و فقط تعدادی ازکنترل ها دارای این خاصیت می باشند، خاصیت Header می باشد. ه این نوع کنترل ها اصطلاحا کنترل های HeaderedContentControls می گویند.
    کنترل هایی که از این دسته می باشند و در این بخش بررسی آن ها خواهیم پرداخت، عبارتند از کنترل GroupBox ، آبجکت TabItem از کنترل TabControl و کنترل Expander که کنترل جدیدی در ویژوال استودیو 2008 می باشد.

    ساده ترین کنترل بین این سه کنترل، کنترل GroupBox می باشد. همانطور که از نام این کنترل مشخص است این کنترل برای گروه بندی دسته ای از کنترل ها به کار می رود. یکی از کاربرد های موثر این کنترل در زمان استفاده از عناصر RadioButton در برنامه می باشد.

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

    کد HTML:
    <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
            </Grid.RowDefinitions>
            <GroupBox Header="Group Box 1 " Margin="10" Padding="10" VerticalAlignment="Top">
                <StackPanel>
                    <RadioButton Margin="3" Name="rbtn1" IsChecked="True" >radio button 
    1</RadioButton>
                    <RadioButton Margin="3" Name="rbtn2">radio button 2</RadioButton>
                    <RadioButton Margin="3" Name="rbtn3">radio button 3</RadioButton>
                    <RadioButton Margin="3" Name="rbtn4">radio button 4</RadioButton>
                </StackPanel>
            </GroupBox>
            <GroupBox Grid.Row="1" Header="GroupBox 2 " Margin="10" Padding="10" 
    VerticalAlignment="Top">
                <StackPanel>
                    <RadioButton Margin="3" IsChecked="True" Name="rbtn5" >radio button 
    5</RadioButton>
                    <RadioButton Margin="3" Name="rbtn6">radio button 6</RadioButton>
                    <RadioButton Margin="3" Name="rbtn7">radio button 7</RadioButton>
                    <RadioButton Margin="3" Name="rbtn8">radio button 8</RadioButton>
                </StackPanel>
            </GroupBox>
        </Grid>
    
    
    در کد فوق، برای گرید اصلی پنجره دو سطر تعریف شده است. یکی از GroupBox ها در سط اول یا سطر شماره 0 و دیگری درون سطر شماره 1 از کنترل گرید قرار گرفته است. هر کنترل GroupBox دارای 4 دکمه رادیویی می باشد.همچنین در کنترل های GroupBox از کنترل StackPanel نیز برای چیدمان بهتر دکمه های رادیویی استفاده شده است.
    همانطور که در شکل می بینید، دکمه های رادیویی در هر گروه از دکمه های رادیویی گروه دیگر کاملا مجزا می باشند و انتخاب شدن و تیک خوردن آن ها تاثیری بر یکدیگر ندارد. ولی در هر گروه تنها می توانید یک دکمه رادیویی را انتخاب نمایید.
    نتیجه اجرای کد های فوق را در شکل زیر مشاهده می کنید :






    خاصیت Groupname :
    این خاصیت مربوط به کنترل GroupBox نمی باشد و مربوط به کنترل های رادیوی می باشد. ولی چون از این دکمه ها در این مثال استفاده کردیم، این خاصیت را در اینجا توضیح میدهم.
    در بعضی از موارد ممکن است حالتی پیش آید که بخواهید کنترل ها را در GroupBox های مختلف ولی در قالب یک گروه سازماندهی کنید. در این حالت نیز کاربر بایستی در هر لحظه فقط انتخاب یکی از آیتم ها را داشته باشد. اگر چه این آیتم ها در GroupBox های مختلفی چیده شده باشند. در این حالت از خاصیت GroupName مربوط به دکمه های رادیوی استفاده می کنیم. حال به کد زیر که تغییر کرده کد فوق می باشد، دقت کنید:



    در کد فوق، خاصیت GroupName همه دکمه های رادیویی با یک اسم یکسان مشخص شده اند. این عمل با عث می شود که هر دو یا چند دکمه رادیویی که دارای مقدار یکسان در خاصیت GroupName می باشند به عنوان یک گروه
    مشخص شوند. همانطور که در شکل زیر مشاهده می کنید






    اگر چه دارای دو کنترل GroupBox جدا هستیم، و کنترل های رادیویی در دو GroupBox مختلف چیده شده اند، ولی چون خاصیت GroupName همه ان ها دارای یک مقدار مشخص می باشند، در هر لحظه تنها می توانید یکی از هشت دکمه رادیویی فوق را انتخاب نمایید.

    نکته :
    در به کارگیری خاصیت GroupName محتاط باشید!!! در به کار گیری خاصیت GroupName به این نکته دقت داشته باشید، که تنها ئکمه هایی که دارای مقدار یکسان برای این خاصیت باشند، به عنوان یک گروه تلقی می شوند. به عنوان مثال اگر تنها دو دکمه از هشت دکمه رادیویی بالا (یکی در GroupBox1 و دیگری در GroupBox2 )را با خاصیت GroupName داده شده، مقدار دهی کنید، تنها همین دو دکمه به عنوان یک گروه مشخص می
    شوند و کاربر می تواند همزمان دو دکمه را در GroupBox1 و یا دو دکمه را در GroupBox2 انتخاب نماید.
    **
    هدر های پیشرفته در کنترل GroupBox :
    همانطور که اشاره شد، کنترل GroupBox از ان دسته کنترل های محتوایی است که دارای یک بخش به نام header می باشد. این بخش که با خاصیت Header مشخص می شود، می توانند مانند خاصیت Content دارای یک عنصر باشد. حال این عنصر می تواند یک متن ساده باشد و یا می تواند یک کنترل کانتینر باشد که خود شامل چندین کنترل فرزند می باشد.

    شکل ساده خاصیت Header در کنترل GroupBox همانی است که در مثال قبل دیدید. یعنی قرار دادن تنها یک متن ساده به عنوان هدر کنترل GroupBox .

    اما در WPF می توانید با کمی به کار گیری ذوق و سلیقه و با به کار گیری کنترل های کانتینر که همانطور که گفتم از اساسی ترین مباحث WPF می باشند و در بخش قبلی به صورت کامل با آن ها آشنا شدید، کنترل های GroupBox سفارشی زیبایی
    بسازید و دیگر نیاز مند کنترل های نوشته شده توسط شرکت و یا اشخاص ثالث نباشید.
    به عنوان مثال به نمونه کد زیر دقت کنید :
    کد HTML:
    <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
            </Grid.RowDefinitions>
            <GroupBox Header="Group Box 1 " Margin="10" Padding="10" VerticalAlignment="Top">
                <StackPanel>
                    <RadioButton Margin="3" Name="rbtn1" IsChecked="True" >radio button 
    1</RadioButton>
                    <RadioButton Margin="3" Name="rbtn2">radio button 2</RadioButton>
                    <RadioButton Margin="3" Name="rbtn3">radio button 3</RadioButton>
                    <RadioButton Margin="3" Name="rbtn4">radio button 4</RadioButton>
                </StackPanel>
            </GroupBox>
            <GroupBox Grid.Row="1" Header="GroupBox 2 " Margin="10" Padding="10" 
    VerticalAlignment="Top">
                <StackPanel>
                    <RadioButton Margin="3" IsChecked="True" Name="rbtn5" >radio button 
    5</RadioButton>
                    <RadioButton Margin="3" Name="rbtn6">radio button 6</RadioButton>
                    <RadioButton Margin="3" Name="rbtn7">radio button 7</RadioButton>
                    <RadioButton Margin="3" Name="rbtn8">radio button 8</RadioButton>
                </StackPanel>
            </GroupBox>
        </Grid>
    در کد فوق، برای گرید اصلی پنجره دو سطر تعریف شده است. یکی از GroupBox ها در سط اول یا سطر شماره 0 و دیگری درون سطر شماره 1 از کنترل گرید قرار گرفته است. هر کنترل GroupBox دارای 4 دکمه رادیویی می باشد.همچنین در کنترل های GroupBox از کنترل StackPanel نیز برای چیدمان بهتر دکمه های رادیویی استفاده شده است.
    همانطور که در شکل می بینید، دکمه های رادیویی در هر گروه از دکمه های رادیویی گروه دیگر کاملا مجزا می باشند و انتخاب شدن و تیک خوردن آن ها تاثیری بر یکدیگر ندارد. ولی در هر گروه تنها می توانید یک دکمه رادیویی را انتخاب نمایید.
    خاصیت Groupname :
    این خاصیت مربوط به کنترل GroupBox نمی باشد و مربوط به کنترل های رادیوی می باشد. ولی چون از این دکمه ها در این مثال استفاده کردیم، این خاصیت را در اینجا توضیح میدهم.
    در بعضی از موارد ممکن است حالتی پیش آید که بخواهید کنترل ها را در GroupBox های مختلف ولی در قالب یک گروه سازماندهی کنید. در این حالت نیز کاربر بایستی در هر لحظه فقط انتخاب یکی از آیتم ها را داشته باشد. اگر چه این آیتم ها در GroupBox های مختلفی چیده شده باشند. در این حالت از خاصیت GroupName مربوط به دکمه های رادیوی استفاده می کنیم. حال به کد زیر که تغییر کرده کد فوق می باشد، دقت کنید:
    کد HTML:
    <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
            </Grid.RowDefinitions>
            <GroupBox Header="Group Box 1 " Margin="10" Padding="10" VerticalAlignment="Top">
                <StackPanel>
                    <RadioButton  GroupName="sameGroup" Margin="3" Name="rbtn1" IsChecked="True" 
    >radio button 1</RadioButton>
                    <RadioButton GroupName="sameGroup" Margin="3" Name="rbtn2">radio button 
    2</RadioButton>
                    <RadioButton GroupName="sameGroup" Margin="3" Name="rbtn3">radio button 
    3</RadioButton>
                    <RadioButton GroupName="sameGroup" Margin="3" Name="rbtn4">radio button 
    4</RadioButton>
                </StackPanel>
            </GroupBox>
            <GroupBox Grid.Row="1" Header="GroupBox 2 " Margin="10" Padding="10" 
    VerticalAlignment="Top">
                <StackPanel>
                    <RadioButton GroupName="sameGroup"  Margin="3" IsChecked="True" Name="rbtn5" 
    >radio button 5</RadioButton>
                    <RadioButton GroupName="sameGroup"  Margin="3" Name="rbtn6">radio button 
    6</RadioButton>
                    <RadioButton GroupName="sameGroup" Margin="3" Name="rbtn7">radio button 
    7</RadioButton>
                    <RadioButton GroupName="sameGroup" Margin="3" Name="rbtn8">radio button 
    8</RadioButton>
                </StackPanel>
            </GroupBox>
        </Grid>
    ر کد فوق، خاصیت GroupName همه دکمه های رادیویی با یک اسم یکسان مشخص شده اند. این عمل با عث می شود که هر دو یا چند دکمه رادیویی که دارای مقدار یکسان در خاصیت GroupName می باشند به عنوان یک گروه
    مشخص شوند.
    اگر چه دارای دو کنترل GroupBox جدا هستیم، و کنترل های رادیویی در دو GroupBox مختلف چیده شده اند، ولی چون خاصیت GroupName همه ان ها دارای یک مقدار مشخص می باشند، در هر لحظه تنها می توانید یکی از هشت دکمه رادیویی فوق را انتخاب نمایید.

    نکته :
    در به کارگیری خاصیت GroupName محتاط باشید!!! در به کار گیری خاصیت GroupName به این نکته دقت داشته باشید، که تنها ئکمه هایی که دارای مقدار یکسان برای این خاصیت باشند، به عنوان یک گروه تلقی می شوند. به عنوان مثال اگر تنها دو دکمه از هشت دکمه رادیویی بالا (یکی در GroupBox1 و دیگری در GroupBox2 )را با خاصیت GroupName داده شده، مقدار دهی کنید، تنها همین دو دکمه به عنوان یک گروه مشخص می
    شوند و کاربر می تواند همزمان دو دکمه را در GroupBox1 و یا دو دکمه را در GroupBox2 انتخاب نماید.
    **
    هدر های پیشرفته در کنترل GroupBox :
    همانطور که اشاره شد، کنترل GroupBox از ان دسته کنترل های محتوایی است که دارای یک بخش به نام header می باشد. این بخش که با خاصیت Header مشخص می شود، می توانند مانند خاصیت Content دارای یک عنصر باشد. حال این عنصر می تواند یک متن ساده باشد و یا می تواند یک کنترل کانتینر باشد که خود شامل چندین کنترل فرزند می باشد.

    شکل ساده خاصیت Header در کنترل GroupBox همانی است که در مثال قبل دیدید. یعنی قرار دادن تنها یک متن ساده به عنوان هدر کنترل GroupBox .

    اما در WPF می توانید با کمی به کار گیری ذوق و سلیقه و با به کار گیری کنترل های کانتینر که همانطور که گفتم از اساسی ترین مباحث WPF می باشند و در بخش قبلی به صورت کامل با آن ها آشنا شدید، کنترل های GroupBox سفارشی زیبایی
    بسازید و دیگر نیاز مند کنترل های نوشته شده توسط شرکت و یا اشخاص ثالث نباشید.
    به عنوان مثال به نمونه کد زیر دقت کنید :
    کد HTML:
    <Window x:Class="contentControls.HeaderdGroupBoxContent"
        xmlns="<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" target="_blank">http://schemas.microsoft.com/winfx/2...l/presentation</a>"
        xmlns:x="<a href="http://schemas.microsoft.com/winfx/2006/xaml" target="_blank">http://schemas.microsoft.com/winfx/2006/xaml</a>"
        Title="HeaderdGroupBoxContent" Height="220" Width="350">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <GroupBox  Margin="10" Padding="10" VerticalAlignment="Top">
                <GroupBox.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20" 
    Margin="0,0,2,0"></Image>
                        <TextBlock Margin="5,0,5,0"> ( Select Score )
                        <TextBlock.Foreground>
                            <LinearGradientBrush>
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Brown" Offset="0"/>
                                    <GradientStop Color="Bisque"  Offset=".5"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </TextBlock.Foreground>
                        </TextBlock>
                    </StackPanel>
                </GroupBox.Header>
                <StackPanel>
                    <RadioButton Margin="3" Name="rbtn1" IsChecked="True" >
                        <Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>
                    </RadioButton>
                    <RadioButton Margin="3" Name="rbtn2">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                        </StackPanel>
                    </RadioButton>
                    <RadioButton Margin="3" Name="rbtn3">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                        </StackPanel>
                    </RadioButton>
                    <RadioButton Margin="3" Name="rbtn4">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                        </StackPanel>
                    </RadioButton>
                    <RadioButton Margin="3" Name="rbtn5">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                            <Image Source=".\Images\star.png" MaxHeight="16" 
    MaxWidth="16"></Image>
                        </StackPanel>
                    </RadioButton>
                </StackPanel>
            </GroupBox>
            <GroupBox Grid.Column="1"  Margin="10" Padding="10" VerticalAlignment="Top">
                <GroupBox.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source=".\Images\banner.png" MaxHeight="32" 
    MaxWidth="32"></Image>
                        <TextBlock Margin="5,0,5,0"> ( Select Country )
                        <TextBlock.Foreground>
                            <LinearGradientBrush>
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Brown"  Offset="0"/>
                                    <GradientStop Color="Gray" Offset=".5"/>
                                    <GradientStop Color="Red" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </TextBlock.Foreground>
                        </TextBlock>
                    </StackPanel>
                </GroupBox.Header>
                <StackPanel>
                    <RadioButton  Margin="3"  Name="rbtn6" IsChecked="True">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\Iran.ico" MaxWidth="20" MaxHeight="20"/>
                            <TextBlock>(Iran)</TextBlock>
                        </StackPanel>
                    </RadioButton>
                    <RadioButton   Margin="3" Name="rbtn7">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\Albania.ico" MaxWidth="20" MaxHeight="20"/>
                            <TextBlock>(Albani)</TextBlock>
                        </StackPanel>
                    </RadioButton>
                    <RadioButton Margin="3" Name="rbtn8">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\Hong-Kong.ico" MaxWidth="20" 
    MaxHeight="20"/>
                            <TextBlock>(Hong-Kong)</TextBlock>
                        </StackPanel>
                    </RadioButton>
                    <RadioButton Margin="3" Name="rbtn9">
                        <StackPanel Orientation="Horizontal">
                            <Image Source=".\Images\Italy.ico" MaxWidth="20" MaxHeight="20"/>
                            <TextBlock>(Italy)</TextBlock>
                        </StackPanel>
                    </RadioButton>
                </StackPanel>
            </GroupBox>
        </Grid>
    همانطور که در شکل فوق مشاهده می کنید، دو کنترل GroupBox سفارشی برای امتیاز ها و کشور ها ایجاد شده است. همانطور که می بینید، هدر کنترل های GroupBox از حالت متنی خارج شده است.
    در کد فوق، خاصیت Header هر یک GroupBox ها به صورت زیر تعریف شده است:
    کد HTML:
    <GroupBox  . . . >
    .
    .
    .
       <GroupBox.Header>
      .
    .
    .
       </GroupBox.Header>
    .
    .
    .
    </GroupBox  >
    دلیل اینکه خاصیت Header به صورت فوق تعریف شده است، این است که می خواهیم درون این خاصیت عکس و متن را در کنار یکدیگر قرار دهیم و یک هدر سفارشی برای آن ایجاد نماییم.
    قبلا نیز اشاره کرده بودم که در زمانی که می خواهیم از مقادیر پیچیده و پیشرفته ای برای یک خاصیت استفاده کنیم بایستی آن ها را از حالت Attribute خارج کنیم و به شکل خود عناصر تعریف نماییم.
    حال می توانیم درون خاصیت Header یک کنترل کانتینر ( متناسب با نیاز) تعریف کنیم و کنترل های خود را درون ان قرار دهیم. به عنوان مثال، در مثال قبل، در خاصیت Header هر یک از GroupBox ها یک عنصر StackPanel تعریف کرده ایم که خاصیت Orientation آن بر روی Horizontal تنظیم شده است.
    سپس درون عنصر StackPanel مذکور، دو عنصر دیگر، یکی از نوع Image و دیگری از نوع TextBlock تعریف کرده ایم. عنصر Image وظیفه نگه داری عکسی را که در خاصیت Source آن مشخص
    شده است را دارد و عنصر TextBlock متن مشخص شده درون ان را نشان می دهد.
    علاوه بر این ، خاصیت Content مربوط به هر یک از دکمه های رادیویی نیز از حالت ساده تک متنی خارج شده و توسط کنترل های کانتیر به مقادیر پبچشده و پیشرفته نسبت داده شده اند. و بدین ترتیب کنترل های GroupBox کاملا سفارشی
    ایجاد شده اند.
    دقت کنید که کد، فوق یکی از ساده ترین شکل ها برای تعریف عناصر سفارشی می باشد. در WPF امکانات بسیاری برای شما ایجاد شده اند که می توانید توسط آن ها کنترل های سفارشی زیبا و متناسب با پروژه های خود را ایجاد نمایید.
    ویرایش توسط javanr0d : 2011-12-29 در ساعت 09:32 PM
  10. 1
صفحه 4 از 4 نخست 1234
نمایش نتایج: از 31 به 35 از 35

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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

Content Relevant URLs by vBSEO 3.6.0 RC 2