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

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

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  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
    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 عصر دلیل: اصلاح نمایش کدها

  8. #8

    نقل قول: 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 قرار می گیرد.

  9. #9
    مدیر بخش آواتار 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

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


  10. #10

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

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

  11. #11
    کاربر دائمی آواتار 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;

  12. #12
    کاربر جدید آواتار 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;

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

  13. #13
    کاربر جدید آواتار 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;

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

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

  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

    نقل قول نوشته شده توسط 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 دقیقا چه کدی باید بنویسیم، چجوری به سلولای اون ستون دسترسی پیدا کنیم؟؟؟

  16. #16

    نقل قول: 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;
    }

  17. #17

    نقل قول: 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

  18. #18

    نقل قول: 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);


    موفق باشید.

  19. #19

    نقل قول: 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>
    عکس های ضمیمه عکس های ضمیمه

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

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

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

  21. #21

    نقل قول: 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();
    }

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

  22. #22
    کاربر دائمی
    تاریخ عضویت
    مرداد 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”;
    }

  23. #23
    کاربر دائمی
    تاریخ عضویت
    مرداد 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>

  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();
    }
    }

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

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

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