نمایش نتایج 1 تا 29 از 29

نام تاپیک: 1001 نکته در WPF

  1. #1

    1001 نکته در WPF

    سلام

    هدف از این تاپیک، صرفا جمع آوری برخي نکات و ترفندهای خلاصه و مفید برنامه نویسی در WPF است. بدلیل تنوع کاربران تالار و گستردگی WPF و فریم ورک؛ لزومی ندارد نکته ای که در اين تاپيك ارسال ميشود موضوعی غامض و چشمگیر باشد؛ در واقع هر نکته ای که به شکل صحیح ارسال شود، میتواند مفید باشد. لطفا قبل از ارسال هر نكته - با مراجعه به ليست نكات - از تكراري نبودن آن اطمينان حاصل نماييد.
    ماهيت تاپيك
    این تاپیک محل مناسبی برای این موارد نیست :
    آموزش برنامه نویسی، سئوال و جواب کردن، سعی در اثبات برتری یک روش خاص، خورده گیری از مطالب ارسالی دیگران، ارسال مطالب غیرفنی و نامرتبط و ...
    لذا چنانچه راجع به هر یک از نکات سئوال و یا مشکلی پیش آمد، لطفا موضوع رو از طریق ارسال پیام خصوصی به نویسنده مطلب و یا طرح در یک تاپیک مستقل، حل و فصل کنید.
    زبان پیشفرض
    زبان پیش فرضی وجود ندارد و می توانید از کدXAML وزبان C#‎‎ و VB.NET استفاده کنید و زبان محاوره ای جهت توضیحات فارسی است.
    چنانچه موضوع ارسالی را از سایتی انگلیسی زبان برداشت میکنید حداقل چند خط از موضوع آن را به فارسی ترجمه نمایید.
    چکیده نویسی
    نکات و ترفندها رو بصورت کاملا خلاصه، مفید و ماژولار (تمرکز هر پست تنها روی یک نکته باشد) ارسال نمایید و از درج هرگونه نکته ی طولانی خودداری و چنانچه نکته ی قابل توجه ای سراغ دارید که نیاز به کدنویسی و توضیحات طولانی دارد؛ تنها به یک اشاره کوچک بسنده و فایل سورس و یا توضیحات کامل را ضمیمه فرمایید.
    درج عنوان پست

    1. عنوان مناسب و مختصری برای مطلب ارسالی خود پیدا کرده و آن را در قسمت عنوان پست بنویسید.
    2. عنوان پست را دقیق و قطعی انتخاب نمایید؛ برای مثال عنوان : "چند نکته مهم در WPF" نامناسب است و یا بجای عنوان : "چند فیلم آموزشی مفید" بهتر است بنویسید : "معرفی لینک دانلود چند فیلم آموزشی رايگان در موردWPF "

    درج رفرنس اصلی و نكات تست شده
    چنانچه نکته ارسالی را از منبعی برداشت میکنید لطفا لینک اصلی آن را نیز در انتهای مطلب درج فرمایید. (با اینکار سایر دوستان نیز میتوانند با مراجعه به لینک از جزییات نکته ارسالی بیشتر مطلع گردند.) و تنها نکات و مطالبی رو ارسال کنید که خود شما تست کرده و از صحت عملکرد اونها مطمئن هستید.



    از اینکه به حقوق خود و دیگران احترام میگذارید از شما سپاسگزارم
    موفق باشید.
    آخرین ویرایش به وسیله ali.aghdam : یک شنبه 14 شهریور 1389 در 17:57 عصر

  2. #2

    ایندکس 1

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

  3. #3

    رزرو برای ایندکس 2

    رزرو شده برای ایندکس گذاری در آینده 2
    آخرین ویرایش به وسیله ali.aghdam : یک شنبه 14 شهریور 1389 در 17:54 عصر دلیل: این پست به دلیل تکراری بودن به طور خودکار ادغام شده است.

  4. #4

    5 نکته جالب

    1- مقدار دهی سایز با "Auto" در کد نویسی
    اگر در هنگام کد نویسی می خواهید مقدار اندازه ی سطر یا ستون یک Grid رو (مثل With) رو با Auto مقدار دهی کنید می بایست از کلاس GridLength استفاده کنید
    GridLength.Auto  
    2-مقدار دهی سایز با "*" در کد نویسی
    برای مقدار دهی اندازه ی سطر یا ستون یک Grid با " * " دوباره از کلاس GridLengthبه صورت زیر استفاده می کنیم
    new GridLength(1,GridUnitType.Star)
    3-مقدار دهی Color شفاف در کد نویسی
    برای این منظور به صورت از تابع FromArgbدر کلاس Color استفاده می کنیم که پارامتر ورودی اول برای شفافیت است و محدوده 0 تا 255 را می پذیرد که 0 به عنوان کاملا شفاف و 255 به عنوان کاملا کدر است
    cmd.Background = new SolidColorBrush(Color.FromArgb(100,0,255,0);
    4-خصیصه های IsCancel و IsDefault دکمه
    اگر IsCancel با true مقدار دهی شود آنگاه دکمه به عنوان دکمه Cancel فرم در نظر گرفته می شود و اگر کاربر Escرا بفشارد رویداد این دکمه اجرا می شود

    اگر IsDefault با true مقدار دهی شود در صورت فشرده شدن Enter توسط کاربر رویداد ای فرم اجرا می شود

    5- قرار دادن دو Option Button از دو گروه مختلف در یک گروه
    برای اینکه دو دکمه رادیویی را از دو Group مختلف در یک Group قرار دهیم از خاصیت GroupName دکمه رادیویی استفاده می کنیم و نام گروه که می خواهیم این دو در آن قرار گیرند را به این خاصیت می دهیم

         <GroupBox Name="Group1" Header="Group Box 1"  Grid.Column=" 0">  
    <RadioButton GroupName="Group3" >RadioButton 1</RadioButton>
    </GroupBox>

    <GroupBox Name="Group2" Header="Group Box 2" Grid.Column=" 0">
    <RadioButton GroupName="Group3" >RadioButton 2</RadioButton>
    </GroupBox>


    منبع : WPF Tips-part1

  5. #5

    Question یک باگ در WPF

    توضیح : در پست قبل یک نکته گفتم که با اون می تونستیم چند تا دکمه رادیویی واقع در GroupBox های مختلف رو به هم مرتبط کرد ولی با اتصال به هم در یک مورد WPF دچار مشکل میشه و اون هم به دلیل LogicalTree و VisualTree است

    به عات زیادی مطلب به منبع مراجعه کنید : لینک منبع

  6. #6

    ويديوهاي رايگان آموزشي WPF

    يك سري ويديوي آموزشي رايگان WPF بجا مانده از Boot Camp 2008 را از اينجا مي‌توانيد دريافت كنيد كه شامل مباحث مختلف بايندينگ، styles ، prism و غيره است.

    منبع : VahidNasiri
    آخرین ویرایش به وسیله ali.aghdam : یک شنبه 14 شهریور 1389 در 18:26 عصر دلیل: این پست به دلیل تکراری بودن به طور خودکار ادغام شده است.

  7. #7

    ویدئو های آموزشی رایگان Expression Blend

    دنبال يك سري ويديوي آموزشي Expression blend بودم كه آدرس زير را پيدا كردم:


    امكان مشاهده‌ي رايگان آن‌ها موجود است، همچنين اگر برنامه‌ي internet download manager را نصب كنيد، هنگام گشودن هر صفحه، يك آيكون ذخيره سازي ويديوي مورد نظر نيز ظاهر مي‌شود كه به اين صورت مي‌توان تمام ويديوها را دانلود كرد.

    منبع : VahidNasiri

  8. #8

    کتاب فارسی رایگان آموزش MVVM

    آقای نصیری مثل همیشه با کتاب های عالی و رایگانشون همه رو شرمنده می کنن

    سری آموزشی MVVM

    فهرست قسمت اول:

    • M-V-VM چيست؟


    • آشنايي با اجزاي مختلف الگوي M-V-VM


    • مزاياي استفاده از الگوي M-V-VM


    • اصول كاري و بايدها و نبايدهاي الگوي M-V-VM


    • بايدها و نبايدهاي يك View


    • بايدها و نبايدهاي ViewModel


    • بايدها و نبايدهاي Model


    • مروري بر معايب الگوي M-V-VM



    فصل 2- معرفي مثالي مقدماتي از پياده سازي الگوي M-V-VM در WPF

    • مقدمه


    • ساختار پوشه‌هاي يك برنامه‌ي MVVM


    • معرفي برنامه‌ي فصل


    • مدل برنامه


    • View برنامه


    • ViewModel برنامه


    دريافت قسمت دوم
    دريافت مثال قسمت دوم

    فصل 3- آشنايي با WPF MVVM Toolkit

    • مقدمه


    • نصب WPF Model-View-ViewModel Toolkit


    • معرفي برنامه‌ي فصل


    • داده‌هاي برنامه


    • مدل برنامه


    • ViewModel برنامه


    • View برنامه


    • افزودن Command به برنامه


    • ايجاد آزمون‌هاي واحد


    دريافت قسمت سوم
    دريافت مثال قسمت سوم

    فصل 4- آشنايي با MVVM Light Toolkit

    • ساير كتابخانه‌ها و Framework هاي موجود MVVM


    • نصب قالب‌هاي MVVM Light Toolkit مخصوص VS.Net 2008


    • نصب قالب‌هاي MVVM Light Toolkit مخصوص VS.Net 2010


    • نصب Code Snippets مجموعه MVVM Light Toolkit در VS.Net 2008/2010


    • نصب فايل‌هاي بايناري كتابخانه‌ي MVVM Light Toolkit


    • نصب قالب‌هاي MVVM Light Toolkit مخصوص Expression Blend


    • بررسي صحت نصب كتابخانه‌ي MVVM Light Toolkit


    • استفاده از Code Snippets نصب شده


    • مثال اول - بررسي RelayCommand


    • مثال دوم - بررسي Messenger


    • مثال سوم - بررسي Blendability


    • مثال چهارم - بررسي EventToCommand



    دريافت قسمت چهارم
    دريافت مثال‌هاي قسمت چهارم

    فصل 5- تعيين اعتبار ورودي كاربر و الگوي MVVM

    • مقدمه


    • معرفي برنامه فصل


    • مدل برنامه‌ي فصل


    • ViewModel برنامه فصل


    • View برنامه فصل



    دريافت قسمت پنجم
    دريافت مثال قسمت پنجم

    منبع : VahidNasiri Blog

  9. #9

    یک Bug در WPF

    وقتی در حال طراحی فرمی بودم که تو اون فرم چند تا Group Box مختلف استفاده کرده بودم تا دکمه رادیویی ها رو از هم جدا کنم ولی بنا به دلایلی می بایست دو تا دکمه رادیویی رو تو دوتا Group Box مختلف تو یه گروه قرار می دادم ! درسته کاره عجیبی به نظر می رسه ولی WPF با دریای قابلیت هاش این امکان رو به ما مید.


    خوب بزارید اول این نحوه استفاده از این قابلیت رو بگم بعد برم سراغ Bug
    وقتی بخواهیم تو XAML چند تا Option Button رو با هم در یک Group قرار دهیم خاصیت GroupName اون دکمه رادیویی رو با یک گروه که الان موجود نیست مقدار دهی می کنیم به صورت زیر:
    <Grid>
    <Grid.ColumnDefinitions >
    <ColumnDefinition Width="150" ></ColumnDefinition>
    <ColumnDefinition Width="150" ></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <GroupBox Header="Group Box 1" Background="AliceBlue" Grid.Column=" 0" Name="Group1">
    <StackPanel>
    <RadioButton >Radio Button 1</RadioButton>
    <RadioButton >Radio Button 2</RadioButton>
    <RadioButton >Radio Button 3</RadioButton>
    <RadioButton GroupName="Group3" Margin="10 5 0 0 ">Group 7</RadioButton>
    </StackPanel>
    </GroupBox>
    <GroupBox Header="Group Box 2" Background="AntiqueWhite" Grid.Column="1" Name="Group2">
    <StackPanel>
    <RadioButton >Radio Button 4</RadioButton>
    <RadioButton >Radio Button 5</RadioButton>
    <RadioButton >Radio Button 6</RadioButton>
    <RadioButton GroupName="Group3" Margin="10 5 0 0 ">Group 8</RadioButton>
    </StackPanel>
    </GroupBox>

    </Grid>
    که خروجی به صورت زیر میشه


    خوب تا اینجا خیلی خوبه و این قابلیت به ما کمک می کنه ولی وقتی خصیصه IsChecked رو با True مقدار دهی می کنیم منطقا باید آخرین دکمه رادیویی که ایجاد میشه انتخاب شده باشه (در اینجا Group 8) ولی خروجی زیر رو مشاهده کنید ! 8)

    سورس پایانی در هنگام وجود مشکل
    <Window x:Class="test_WPF.MainForm"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="160" Width="320" Title ="WPF Crazy Bug">
    <Grid>
    <Grid.ColumnDefinitions >
    <ColumnDefinition Width="150" ></ColumnDefinition>
    <ColumnDefinition Width="150" ></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <GroupBox Header="Group Box 1" Background="AliceBlue" Grid.Column=" 0" Name="Group1">
    <StackPanel>
    <RadioButton IsChecked="True" >Radio Button 1</RadioButton>
    <RadioButton IsChecked="True">Radio Button 2</RadioButton>
    <RadioButton >Radio Button 3</RadioButton>
    <RadioButton IsChecked="True" GroupName="Group3" Margin="10 5 0 0 ">Group 7</RadioButton>
    </StackPanel>
    </GroupBox>
    <GroupBox Header="Group Box 2" Background="AntiqueWhite" Grid.Column="1" Name="Group2">
    <StackPanel>
    <RadioButton >Radio Button 4</RadioButton>
    <RadioButton >Radio Button 5</RadioButton>
    <RadioButton >Radio Button 6</RadioButton>
    <RadioButton IsChecked="True" GroupName="Group3" Margin="10 5 0 0 ">Group 8</RadioButton>
    </StackPanel>
    </GroupBox>

    </Grid>

    </Window>

    دلیل این مشکل وجود Logical Tree و Visual Tree است که می توانید برای اطلاعات بیشتر به لینک زیر مراجعه کنید .

    http://www.wpftutorial.net/LogicalAndVisualTree.html

    منبع : Aliaghdam.blogspot.com

  10. #10
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    فروردین 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    رفتن فكوس از يك كنترل به يك كنترل ديگه با زدن دكمه Enter

    براي رفتن فكوس از يك كنترل به يك كنترل ديگه با زدن دكمه Enter
    توي رويداد KeyUp كنترلتون بنويسيد

    var uie = e.OriginalSource as UIElement;
    if (e.Key == Key.Enter)
    {
    e.Handled = true;
    uie.MoveFocus(newTraversalRequest(FocusNavigationD irection.Next));
    }
    آخرین ویرایش به وسیله مهدی فرزاد : چهارشنبه 10 فروردین 1390 در 19:36 عصر دلیل: اصلاح نمایش کدها

  11. #11
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    فروردین 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    فارسی کردن صفحه کلید

    میتونید در خواص ویندوزتون در محیط XAML بنویسید
    InputLanguageManager.InputLanguage="Fa-IR"


    مثلا

    Title="MainWindow" Height="350" Width="525" InputLanguageManager.InputLanguage="Fa-IR">


    البته برای هر Textbox هم جدا گونه میتونید بنویسید اینجوری هر TextBox که میخواید فارسی هست و بقیه تکس باکسهاانگلیسی

    مثال

    <TextBoxName="textBox1" VerticalAlignment="Top" Width="120" InputLanguageManager.InputLnguage="Fa-IR"/>
    آخرین ویرایش به وسیله مهدی فرزاد : چهارشنبه 10 فروردین 1390 در 19:31 عصر دلیل: اصلاح نمایش کدها

  12. #12

    نقل قول: 1001 نکته در WPF

    برای قرار دادن یک کنترل بر روی کنترل های دیگر یا در زیر آن ها می توانید از خصیصه ی Panel.ZIndex استفاده کنید. بدین صورت که، کنترلی که بیشترین مقدار ZIndex را داشته باشد، روی سایر کنترل هایی قرار میگیرد که ZIndex آنها کمتر از مقدار آن باشد و برعکس. در صورتی که مقدار ZIndex دو کنترل برابر باشد، کنترلی که دیرتر ایجاد می شود، بر روی سایر کنترل ها قرار می گیرد.

    <Grid>
    <Rectangle Name="A" Panel.ZIndex="3" Width="100" Height="100" Fill="blue"/>
    <Rectangle Name="B" Panel.ZIndex="1" Width="100" Height="100" Fill="yellow"/>
    <Rectangle Name="C" Panel.ZIndex="2" Width="100" Height="100" Fill="green"/>
    </Grid>


    در مثال فوق مستطیل A بر روی مستطیل B و C و مستطیل C بر روی B و زیر A قرار می گیرد.

  13. #13
    مدیر بخش آواتار mmd2009
    تاریخ عضویت
    فروردین 1403
    محل زندگی
    تهران
    پست
    2,393

    نقل قول: 1001 نکته در WPF

    با سلام

    اینک کد که به صورت کامل مشکل فقط عدد بود یک تکست باکس رو حل میکنه این کد قادر هست که حتی Ctrl+V رو هم تشخیص بده



    // Use the PreviewTextInputHandler to respond to key presses
    private void PreviewTextInputHandler(Object sender, TextCompositionEventArgs e)
    {
    e.Handled = !IsTextAllowed(e.Text);
    }
    private Boolean IsTextAllowed(String text)
    {
    foreach (Char c in text.ToCharArray())
    {
    if (Char.IsDigit(c) || Char.IsControl(c)) continue;
    else return false;
    }
    return true;
    }

    // Use the DataObject.Pasting Handler
    private void PastingHandler(object sender, DataObjectPastingEventArgs e)
    {
    if (e.DataObject.GetDataPresent(typeof(String)))
    {
    String text = (String)e.DataObject.GetData(typeof(String));
    if (!IsTextAllowed(text)) e.CancelCommand();
    }
    else e.CancelCommand();
    }





    PreviewTextInput="PreviewTextInputHandler" DataObject.Pasting="PastingHandler"


    منبع : karlhulme.wordpress.com

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  14. #14
    مدیر بخش آواتار mmd2009
    تاریخ عضویت
    فروردین 1403
    محل زندگی
    تهران
    پست
    2,393

    نقل قول: 1001 نکته در WPF

    شاید سوال خیلی از بچه های انجمن باشه این سوال که چطور میشه با زدد کلیک بر روی هدر یک ستون Checkbox های زیر اون ستون همگی true یا False بشن

    خب من چندتا راه حل پیدا کردم که یکی از اونا که به نظر خودم خیلی بهتر بود استفاده از یک Checkbox در هدر اون ستون هست که با تیک خوردنش همه Checkbox زیر اون ستون هم تیکشون true یا False بشن

    کد Xaml اون به صورت زیر است :


    <dg:DataGridTemplateColumn>
    <dg:DataGridTemplateColumn.HeaderTemplate>
    <DataTemplate x:Name="Checking">
    <CheckBox x:Name="CheckBoxClickAll" Click="CheckBoxClickAll" Content="{Binding}" IsChecked="False" IsThreeState="False"/>
    </DataTemplate>
    </dg:DataGridTemplateColumn.HeaderTemplate>
    <dg:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
    <CheckBox Width="14" VerticalAlignment="Center" IsChecked="{Binding Selecting, UpdateSourceTrigger=PropertyChanged}" x:Name="LocalColumnCheckbox" />
    </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
    </dg:DataGridTemplateColumn>



    متد :


    private void CheckBoxClickAll(object sender, RoutedEventArgs e)
    {
    var checkBox = e.OriginalSource as CheckBox;

    if (checkBox != null && checkBox.Name == "CheckBoxClickAll")
    {
    if (checkBox.IsChecked.GetValueOrDefault(false))
    {
    //Checked
    }
    else
    {
    //UnChecked
    }
    }
    }

    موفق باشید

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  15. #15

    نقل قول: 1001 نکته در WPF

    Splash Screen با کد مدیریت نشده در WPF توسط یک کلاس
    استفاده از یک عکس برای Splash Screen ..

    رویداد Startup Application


    private void Application_Startup(object sender, StartupEventArgs e)
    {
    SplashScreen sc = new SplashScreen(@"splashscreen.gif");
    sc.Show(true);
    }


    خودتون ببینید بهتره :

    http://msdn.microsoft.com/en-us/libr...ashscreen.aspx

  16. #16

    نقل قول: 1001 نکته در WPF

    استفاده از Timer در WPF

    این کامپوننت بسیار شبیه به کامپوننت Timer موجود در WinForm‌ است.

    System.Windows.Threading.DispatcherTimer tmr = new System.Windows.Threading.DispatcherTimer();


    تعیین زمان:

    tmr.Interval = TimeSpan.FromMilliseconds(100);


    رویداد تیک:

    tmr.Tick += new EventHandler(tmr_Tick);


    موفق باشید.

  17. #17

    نقل قول: 1001 نکته در WPF

    سلام بواسطه استفاده از این قطعه کد میشه فرم رو به همچین شکلی در آورد.با قابلیت مدیریت offset
    <Rectangle RadiusX="10" RadiusY="10">
    <Rectangle.Fill>
    <ImageBrush ImageSource="/Glass;component/Images/shutterstock_13992.jpg" Stretch="UniformToFill" />
    </Rectangle.Fill>
    <Rectangle.OpacityMask>
    <LinearGradientBrush StartPoint="0,1" EndPoint="0,0">
    <GradientStop Offset="0.0" Color="Black" />
    <GradientStop Offset="1.0" Color="Transparent" />
    </LinearGradientBrush>
    </Rectangle.OpacityMask>
    </Rectangle>
    عکس های ضمیمه عکس های ضمیمه

  18. #18
    کاربر دائمی آواتار Parham.D
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    شيراز
    پست
    413

    Post دسترسی به منابع یک فایل DLL توسط StreamSource

    تصور کنید شما یک فایل DLL ایجاد کردید که داخل آن چند فایل تصویری وجود دارد و میخواهید از فایل DLL و فایلهای داخل آن به عنوان یک منبع از تصاویر مورد نیاز در برنامه خود استفاده کنید. روش زیر به شما کمک میکنه به فایلهای درون فایل DLL دسترسی پیدا کرده و از آنها استفاده کنید.


    // Find DLL file name.
    var assemblyName =
    AssemblyName.GetAssemblyName("C://AppPicture.DLL");

    // Load DLL file and get file's name in the DLL file.
    var assembly = Assembly.Load(assemblyName);
    var namesOfResourcesInDllFile = assembly.GetManifestResourceNames();

    // Read one of file in DLL file and put it to the bitmap image.
    var bitmapImage = new BitmapImage();
    bitmapImage.BeginInit();
    bitmapImage.StreamSource = assembly.GetManifestResourceStream(namesOfResource sInDllFile[0]);
    bitmapImage.EndInit();

    // Use the picture.
    image1.Source = bitmapImage;


    کلاس assembly دو متد GetManifestResourceName و GetManifestResourceStream را فراهم میکند. اولی نام منابع (در مثال ما فایلهای تصویری) در یک اسمبلی را به صورت آرایه استخراج میکند و دومی با داشتن نام منبع، آن را به صورت یک stream از اسمبلی استخراج میکند.

  19. #19
    کاربر دائمی آواتار alihassanabadi
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    Tehran
    پست
    372

    نقل قول: 1001 نکته در WPF

    سلام
    ایجاد کرنومتر(Stop Watch) در WPF با استفاده از کلاس های
    DispatcherTimer و Stopwatch
    https://barnamenevis.org/showthread.p...095-stop-watch

  20. #20

    نقل قول: 1001 نکته در WPF

    نقل قول نوشته شده توسط mmd2009 مشاهده تاپیک
    شاید سوال خیلی از بچه های انجمن باشه این سوال که چطور میشه با زدد کلیک بر روی هدر یک ستون Checkbox های زیر اون ستون همگی true یا False بشن

    خب من چندتا راه حل پیدا کردم که یکی از اونا که به نظر خودم خیلی بهتر بود استفاده از یک Checkbox در هدر اون ستون هست که با تیک خوردنش همه Checkbox زیر اون ستون هم تیکشون true یا False بشن

    کد Xaml اون به صورت زیر است :


    <dg:DataGridTemplateColumn>
    <dg:DataGridTemplateColumn.HeaderTemplate>
    <DataTemplate x:Name="Checking">
    <CheckBox x:Name="CheckBoxClickAll" Click="CheckBoxClickAll" Content="{Binding}" IsChecked="False" IsThreeState="False"/>
    </DataTemplate>
    </dg:DataGridTemplateColumn.HeaderTemplate>
    <dg:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
    <CheckBox Width="14" VerticalAlignment="Center" IsChecked="{Binding Selecting, UpdateSourceTrigger=PropertyChanged}" x:Name="LocalColumnCheckbox" />
    </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
    </dg:DataGridTemplateColumn>



    متد :


    private void CheckBoxClickAll(object sender, RoutedEventArgs e)
    {
    var checkBox = e.OriginalSource as CheckBox;

    if (checkBox != null && checkBox.Name == "CheckBoxClickAll")
    {
    if (checkBox.IsChecked.GetValueOrDefault(false))
    {
    //Checked
    }
    else
    {
    //UnChecked
    }
    }
    }

    موفق باشید



    تو قسمتای checked و unchecked دقیقا چه کدی باید بنویسیم، چجوری به سلولای اون ستون دسترسی پیدا کنیم؟؟؟

  21. #21

    نقل قول: 1001 نکته در WPF

    پیدا کردن کل مسیر در TreeView



     private void TreeView_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
    {
    FullPath = OldGetFullPath(e.OriginalSource as UIElement);
    }

    public String OldGetFullPath(UIElement source)
    {
    var st = "";
    while ((source != null))
    {
    source = VisualTreeHelper.GetParent(source) as UIElement;
    var container = source as TreeViewItem;

    if (container != null)
    {
    st += container.Header + " / ";
    }
    }
    return st;
    }

  22. #22

    نقل قول: 1001 نکته در WPF

    بستن برنامه در wpf
     private void Button_Click_2(object sender, RoutedEventArgs e)
    {
    //System.Environment.Exit(0);
    // System.Diagnostics.Process.GetCurrentProcess().Kil l();
    Application.Current.Shutdown();
    }

    باهر سه کد می توان برنامه را بست

  23. #23
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: 1001 نکته در WPF

    اضافه نمودن tooltip درTaskbar Item:


    <Window>
    <Window.TaskbarItemInfo>
    <TaskbarItemInfo Description=”Custom tooltip”/>
    </Window.TaskbarItemInfo>
    </Window>





    و یا در code behind:


    public MainWindow()
    {
    this.TaskbarItemInfo = new TaskbarItemInfo();
    this.TaskbarItemInfo.Description = “Custom tooltip”;
    }

  24. #24
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: 1001 نکته در WPF

    اپلیکیشن شبیه گجت:


    <Window x:Class=”GadgetWindow”
    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
    Height=”300” Width=”300”
    AllowsTransparency=”True” WindowStyle=”None” Background=”Transparent”
    MouseLeftButtonDown=”Window_MouseLeftButtonDown >
    <Grid>
    <Ellipse Fill=”Red” Opacity=”0.5” Margin=”20”>
    <Ellipse.Effect>
    <DropShadowEffect/>
    </Ellipse.Effect>
    </Ellipse>
    <Button Margin=”100” Click=”Button_Click”>Close</Button>
    </Grid>
    </Window>



    تو کد بیهایند:


    using System.Windows;
    using System.Windows.Input;
    public partial class GadgetWindow : Window
    {
    public GadgetWindow()
    {
    InitializeComponent();
    }
    void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
    this.DragMove();
    }
    void Button_Click(object sender, RoutedEventArgs e)
    {
    this.Close();
    }
    }

  25. #25
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: 1001 نکته در WPF

    JumpTasks:


    <Application x:Class=”PhotoGallery.App”
    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
    StartupUri=”MainWindow.xaml”>
    <JumpList.JumpList>
    <JumpList>
    <JumpTask Title=”Magnifier”
    Description=”Open the Windows Magnifier.”
    ApplicationPath=”%WINDIR%\system32\magnify.exe />
    <JumpTask Title=”Calculator”
    Description=”Open the Windows Calculator.”
    ApplicationPath=”%WINDIR%\system32\calc.exe”
    IconResourcePath=”%WINDIR%\system32\calc.exe”/>
    <JumpTask Title=”Notepad”
    Description=”Open Notepad.”
    ApplicationPath=”%WINDIR%\system32\notepad.exe
    IconResourcePath=”%WINDIR%\system32\notepad.exe
    WorkingDirectory=”%HOMEDRIVE%%HOMEPATH%”/>
    <JumpTask Title=”Internet Explorer (No Add-Ons)”
    Description=”Start without ActiveX controls or extensions.”
    ApplicationPath=”%PROGRAMFILES%\Internet Explorer\iexplore.exe”
    IconResourcePath=”%PROGRAMFILES%\Internet Explorer\iexplore.exe”
    WorkingDirectory=”%HOMEDRIVE%%HOMEPATH%”
    IconResourceIndex=”6” Arguments=”-extoff”/>
    </JumpList>
    </JumpList.JumpList>
    </Application>

  26. #26

    نقل قول: 1001 نکته در WPF

    سلام
    ممنون از پست خوبتون
    یه سوال دارم اگه ممکنه جواب بدید
    اگر بخوایم کاربر اجازه ی وارد کردن عدد نداشته باشه چیکار باید کرد؟
    چه کدی بنویسم؟
    ممنون

  27. #27
    کاربر دائمی آواتار alireza264
    تاریخ عضویت
    تیر 1390
    محل زندگی
    تهران
    پست
    264

    نقل قول: 1001 نکته در WPF

    نقل قول نوشته شده توسط kkk_kkk مشاهده تاپیک
    سلام
    ممنون از پست خوبتون
    یه سوال دارم اگه ممکنه جواب بدید
    اگر بخوایم کاربر اجازه ی وارد کردن عدد نداشته باشه چیکار باید کرد؟
    چه کدی بنویسم؟
    ممنون
    سلام توی Keydown کد زیر رو بنویس



    if (!(Convert.ToInt32(e.Key) < 34 || (Convert.ToInt32(e.Key) > 43 && Convert.ToInt32(e.Key) < 74) || Convert.ToInt32(e.Key) > 83)) e.Handled = true;

  28. #28
    کاربر جدید آواتار behnaz_wpf
    تاریخ عضویت
    تیر 1395
    محل زندگی
    اصفهاااااااااان
    پست
    16

    نقل قول: 1001 نکته در WPF

    نقل قول نوشته شده توسط alireza264 مشاهده تاپیک
    سلام توی Keydown کد زیر رو بنویس



    if (!(Convert.ToInt32(e.Key) < 34 || (Convert.ToInt32(e.Key) > 43 && Convert.ToInt32(e.Key) < 74) || Convert.ToInt32(e.Key) > 83)) e.Handled = true;

    سلام ببخشید اگه بخایم فقط حروف فارسی وارد بشه چی بنویسیم؟؟؟

  29. #29
    کاربر جدید آواتار behnaz_wpf
    تاریخ عضویت
    تیر 1395
    محل زندگی
    اصفهاااااااااان
    پست
    16

    نقل قول: 1001 نکته در WPF

    نقل قول نوشته شده توسط alireza264 مشاهده تاپیک
    سلام توی Keydown کد زیر رو بنویس



    if (!(Convert.ToInt32(e.Key) < 34 || (Convert.ToInt32(e.Key) > 43 && Convert.ToInt32(e.Key) < 74) || Convert.ToInt32(e.Key) > 83)) e.Handled = true;

    اگه بخوایم فقط عدد وارد بشه چی؟؟؟؟؟؟؟

    یا فقط حروف انگلیسی؟؟؟

برچسب های این تاپیک

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

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