ورود

View Full Version : 1001 نکته در WPF



ali.aghdam
یک شنبه 14 شهریور 1389, 17:41 عصر
سلام

هدف از این تاپیک، صرفا جمع آوری برخي نکات و ترفندهای خلاصه و مفید برنامه نویسی در WPF است. بدلیل تنوع کاربران تالار و گستردگی WPF و فریم ورک؛ لزومی ندارد نکته ای که در اين تاپيك ارسال ميشود موضوعی غامض و چشمگیر باشد؛ در واقع هر نکته ای که به شکل صحیح ارسال شود، میتواند مفید باشد. لطفا قبل از ارسال هر نكته - با مراجعه به ليست نكات - از تكراري نبودن آن اطمينان حاصل نماييد.
ماهيت تاپيك


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

زبان پیشفرض

زبان پیش فرضی وجود ندارد و می توانید از کدXAML وزبان C#‎ و VB.NET استفاده کنید و زبان محاوره ای جهت توضیحات فارسی است.
چنانچه موضوع ارسالی را از سایتی انگلیسی زبان برداشت میکنید حداقل چند خط از موضوع آن را به فارسی ترجمه نمایید.

چکیده نویسی
نکات و ترفندها رو بصورت کاملا خلاصه، مفید و ماژولار (تمرکز هر پست تنها روی یک نکته باشد) ارسال نمایید و از درج هرگونه نکته ی طولانی خودداری و چنانچه نکته ی قابل توجه ای سراغ دارید که نیاز به کدنویسی و توضیحات طولانی دارد؛ تنها به یک اشاره کوچک بسنده و فایل سورس و یا توضیحات کامل را ضمیمه فرمایید.
درج عنوان پست




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


درج رفرنس اصلی و نكات تست شده

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


از اینکه به حقوق خود و دیگران احترام میگذارید از شما سپاسگزارم
موفق باشید.

ali.aghdam
یک شنبه 14 شهریور 1389, 17:46 عصر
رزرو شده است برای ایندکس گذاری مطالب

ali.aghdam
یک شنبه 14 شهریور 1389, 17:52 عصر
رزرو شده برای ایندکس گذاری در آینده 2

ali.aghdam
یک شنبه 14 شهریور 1389, 18:00 عصر
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 (http://aliaghdam.blogspot.com/2010/09/wpf-tips-part-1.html)

ali.aghdam
یک شنبه 14 شهریور 1389, 18:08 عصر
توضیح : در پست قبل یک نکته گفتم که با اون می تونستیم چند تا دکمه رادیویی واقع در GroupBox های مختلف رو به هم مرتبط کرد ولی با اتصال به هم در یک مورد WPF دچار مشکل میشه و اون هم به دلیل LogicalTree و VisualTree است

به عات زیادی مطلب به منبع مراجعه کنید : لینک منبع (http://aliaghdam.blogspot.com/2010/09/bug-wpf.html)

ali.aghdam
یک شنبه 14 شهریور 1389, 18:25 عصر
يك سري ويديوي آموزشي رايگان WPF بجا مانده از http://archive.visitmix.com/favicon.icoBoot Camp 2008 (http://archive.visitmix.com/university/wpf/bc08/Default.aspx) را http://archive.visitmix.com/favicon.icoاز اينجا (http://archive.visitmix.com/university/wpf/bc08/links.htm#Introduction) مي‌توانيد دريافت كنيد كه شامل مباحث مختلف بايندينگ، styles ، prism و غيره است.

منبع : VahidNasiri (http://vahidnasiri.blogspot.com/2010/02/wpf.html)

ali.aghdam
یک شنبه 14 شهریور 1389, 18:31 عصر
دنبال يك سري ويديوي آموزشي Expression blend بودم كه آدرس زير را پيدا كردم:


http://www.lynda.com/favicon.icoExpression Blend Beta Preview (http://www.lynda.com/home/DisplayCourse.aspx?lpk2=359)


امكان مشاهده‌ي رايگان آن‌ها موجود است، همچنين اگر برنامه‌ي http://www.internetdownloadmanager.com/favicon.icointernet download manager (http://www.internetdownloadmanager.com/) را نصب كنيد، هنگام گشودن هر صفحه، يك آيكون ذخيره سازي ويديوي مورد نظر نيز ظاهر مي‌شود كه به اين صورت مي‌توان تمام ويديوها را دانلود كرد.

منبع : VahidNasiri (http://vahidnasiri.blogspot.com/2009/04/expression-blend-wpf-tutorial.html)

ali.aghdam
دوشنبه 15 شهریور 1389, 15:45 عصر
آقای نصیری مثل همیشه با کتاب های عالی و رایگانشون همه رو شرمنده می کنن:خجالت:

سری آموزشی MVVM

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


M-V-VM چيست؟



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



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



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



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



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



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



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




http://www.box.net/favicon.icoدريافت قسمت اول (http://www.box.net/shared/3i7gf3b7xd)




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


مقدمه



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



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



مدل برنامه



View برنامه



ViewModel برنامه


http://www.box.net/favicon.icoدريافت قسمت دوم (http://www.box.net/shared/tam3vh71nz)
http://www.box.net/favicon.icoدريافت مثال قسمت دوم (http://www.box.net/shared/m3kkdfi4m1)

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


مقدمه



نصب WPF Model-View-ViewModel Toolkit



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



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



مدل برنامه



ViewModel برنامه



View برنامه



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



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


http://www.box.net/favicon.icoدريافت قسمت سوم (http://www.box.net/shared/dlik4l5vgj)
http://www.box.net/favicon.icoدريافت مثال قسمت سوم (http://www.box.net/shared/ma5ivq97sg)

فصل 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



http://www.box.net/favicon.icoدريافت قسمت چهارم (http://www.box.net/shared/ttm3rbeuee)
http://www.box.net/favicon.icoدريافت مثال‌هاي قسمت چهارم (http://www.box.net/shared/jt60d86c2x)

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


مقدمه



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



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



ViewModel برنامه فصل



View برنامه فصل



http://www.box.net/favicon.icoدريافت قسمت پنجم (http://www.box.net/shared/3fkuyhup2q)
http://www.box.net/favicon.icoدريافت مثال قسمت پنجم (http://www.box.net/shared/6jz420bi97)

منبع : http://vahid.nasiri.googlepages.com/weblink.gifVahidNasiri Blog (http://vahidnasiri.blogspot.com/search/label/MVVM)

ali.aghdam
یک شنبه 28 شهریور 1389, 18:00 عصر
وقتی در حال طراحی فرمی بودم که تو اون فرم چند تا 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>
که خروجی به صورت زیر میشه


http://aliaghdam.persiangig.com/myArticles/DotNET/WPF/WPF%20Bug/1.png (http://aliaghdam.persiangig.com/myArticles/DotNET/WPF/WPF%20Bug/1.png)

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


http://aliaghdam.persiangig.com/myArticles/DotNET/WPF/WPF%20Bug/2.png (http://aliaghdam.persiangig.com/myArticles/DotNET/WPF/WPF%20Bug/2.png)
سورس پایانی در هنگام وجود مشکل

<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 (http://aliaghdam.blogspot.com/2010/09/bug-wpf.html)

مهدی فرزاد
یک شنبه 16 آبان 1389, 17:03 عصر
براي رفتن فكوس از يك كنترل به يك كنترل ديگه با زدن دكمه Enter
توي رويداد KeyUp كنترلتون بنويسيد

var uie = e.OriginalSource as UIElement;
if (e.Key == Key.Enter)
{
e.Handled = true;
uie.MoveFocus(newTraversalRequest(FocusNavigationD irection.Next));
}

مهدی فرزاد
دوشنبه 15 آذر 1389, 12:42 عصر
میتونید در خواص ویندوزتون در محیط 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"/>

jalalx
یک شنبه 12 دی 1389, 23:04 عصر
برای قرار دادن یک کنترل بر روی کنترل های دیگر یا در زیر آن ها می توانید از خصیصه ی 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 قرار می گیرد.

mmd2009
جمعه 14 مرداد 1390, 07:20 صبح
با سلام

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

mmd2009
جمعه 14 مرداد 1390, 19:02 عصر
شاید سوال خیلی از بچه های انجمن باشه این سوال که چطور میشه با زدد کلیک بر روی هدر یک ستون 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
}
}
}

موفق باشید

S30S60
پنج شنبه 13 بهمن 1390, 12:29 عصر
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/library/system.windows.splashscreen.aspx

S30S60
چهارشنبه 30 فروردین 1391, 10:20 صبح
استفاده از 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);

موفق باشید.

m.bibjan
سه شنبه 06 تیر 1391, 05:14 صبح
سلام بواسطه استفاده از این قطعه کد میشه فرم رو به همچین شکلی در آورد.با قابلیت مدیریت 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>

Parham.D
پنج شنبه 29 تیر 1391, 07:13 صبح
تصور کنید شما یک فایل 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 از اسمبلی استخراج میکند.

alihassanabadi
یک شنبه 26 آذر 1391, 09:55 صبح
سلام
ایجاد کرنومتر(Stop Watch) در WPF با استفاده از کلاس های
DispatcherTimer و Stopwatch
http://barnamenevis.org/showthread.php?373095-stop-watch

msn2msn
چهارشنبه 24 مهر 1392, 09:50 صبح
شاید سوال خیلی از بچه های انجمن باشه این سوال که چطور میشه با زدد کلیک بر روی هدر یک ستون 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 دقیقا چه کدی باید بنویسیم، چجوری به سلولای اون ستون دسترسی پیدا کنیم؟؟؟

sajjad.razizade
دوشنبه 26 خرداد 1393, 01:28 صبح
پیدا کردن کل مسیر در 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;
}

Iran58
یک شنبه 05 مرداد 1393, 11:01 صبح
بستن برنامه در wpf
private void Button_Click_2(object sender, RoutedEventArgs e)
{
//System.Environment.Exit(0);
// System.Diagnostics.Process.GetCurrentProcess().Kil l();
Application.Current.Shutdown();
}
باهر سه کد می توان برنامه را بست

elec60
پنج شنبه 13 شهریور 1393, 20:34 عصر
اضافه نمودن 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”;
}

elec60
پنج شنبه 13 شهریور 1393, 20:58 عصر
اپلیکیشن شبیه گجت:



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

elec60
پنج شنبه 13 شهریور 1393, 21:01 عصر
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>

kkk_kkk
پنج شنبه 25 دی 1393, 12:02 عصر
سلام
ممنون از پست خوبتون
یه سوال دارم اگه ممکنه جواب بدید
اگر بخوایم کاربر اجازه ی وارد کردن عدد نداشته باشه چیکار باید کرد؟
چه کدی بنویسم؟
ممنون

alireza264
چهارشنبه 20 خرداد 1394, 17:15 عصر
سلام
ممنون از پست خوبتون
یه سوال دارم اگه ممکنه جواب بدید
اگر بخوایم کاربر اجازه ی وارد کردن عدد نداشته باشه چیکار باید کرد؟
چه کدی بنویسم؟
ممنون

سلام توی 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;

behnaz_wpf
جمعه 25 تیر 1395, 21:56 عصر
سلام توی 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;


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

behnaz_wpf
جمعه 25 تیر 1395, 22:13 عصر
سلام توی 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;


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

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