سلام، من تو نت مثال هایی از هر کدوم از این موارد دیدم، ولی حقیقتا هنوز هم فرقشونو نفهمیدم، امکانش هس یکی فرق این موارد رو برام بگه؟
سلام، من تو نت مثال هایی از هر کدوم از این موارد دیدم، ولی حقیقتا هنوز هم فرقشونو نفهمیدم، امکانش هس یکی فرق این موارد رو برام بگه؟
سلام
تقریبا بجز DataGrid ، بین بقیه ، تفاوتی وجود نداره .
مثل این میمونه که بگم تفاوت Control با Button چیه؟
اینجا ، بحث تفاوت نیست . بلکه خود شیِ Button ، شی ای از Control هم محسوب میشه .
1) itemscontrol ها ، کنترل هایی را شامل میشه که میتونن شامل چندین آیتم (فرضا کنید چندین محتوا) بشن .
مثل ComboBox و ListBox و ListView و DataGrid و TabControl و TreeView و ToolBar و Menu و ContextMenu و MenuItem و بسیاری از کنترل های دیگه .
یعنی اون کنترل های ListBox و ListView و DataGrid هم از نوع itemscontrol محسوب میشن (قضیه ی شی گرایی) .
2) ListBox که دیگه معروف ترین نوعِ itemscontrol هست (که لیستی از آیتم ها را میشه توش قرار داد) .
3) ListView ، نوعی ListBox هست که توسط پروپرتیِ View اش میشه ظاهر کنترل را بصورت Grid نشون داد (بیشتر ، برای نشون دادن بصورت Grid مناسب هست و برای ویرایش کردن اطلاعات ، کمتر ازش استفاده میشه) . شکل زیر ، یک ListView هست :
4) DataGrid هم که نوعی itemscontrol هست ، مناسب ترین کنترل برای زمانی هست که اطلاعات تون را بخواین بصورت Grid نمایش بدین و همچنین بخواین اطلاعاتش را ویرایش و نمایش را سفارشی کنید .
در واقع بین کنترل هایی که مطرح کردید ، اگه تفاوتی باشه ، تفاوت بین کنترل DataGrid و ListView هست که مهم ترین تفاوت شون در بالا اشاره شد و بصورت کامل میتونین از لینک زیر ببینید :
https://stackoverflow.com/questions/...atagrid-in-wpf
و
https://stackoverflow.com/questions/...agrid/21255674
ممنون، 2 تا سوال اساسی :
تو مورد 4 گفتید که "اطلاعاتش را ویرایش و نمایش را سفارشی کنید" و همچنین گفتید "DataGrid هم که نوعی itemscontrol هست"
من itemscontrol زیر رو ایجاد کردم، الان برا تغییر هر سطر ( رنگ background اش ) مجبورم DataSource جدیدی بهش بدم هربار؛ الان اگه از DataGrid استفاده کنم :
Untitled.png
1) میتونم همچین چیزی با DataGrid طراحی کنم؟ قابلیتش هستش؟
2) با DataGrid میتونم مثل یه لیست/آرایه، به هر ردیف دسترسی داشته باشم و اطلاعاتشو بخونم و یا تغییر بدم؟ ( مثلا تو کدنویسی C# بگم رنگ زمینه ردیف X رو تغییر بده؛ یا متغییر Name که تو کلاس Model بهش به عنوان DataSource دادم رو بخونم ازش )
توجه : این دو موردی که در بالا ذکر کردم، من هرکاری کردم با itemscontrol نتونستم به جواب برسم، بنظرم این قابلیت ها رو ندارن، درسته؟
آخرین ویرایش به وسیله md3848 : چهارشنبه 10 دی 1399 در 21:21 عصر
سلامی مجدد
1) با پروپرتیِ DataGrid.RowStyle میتونید این کار را انجام بدین :
https://docs.microsoft.com/en-us/dot...aGrid_RowStyle
2) قطعا باید بشه (البته من با کنترل DataGrid کار نکردم) . هم میتونید بایندینگِ انجام بدین تا با تغییرِ یک مقداری در منبع تون ، اطلاعات DataGrid هم تغییر کنه (مثلا بایندینگ به DataTable) :
https://social.msdn.microsoft.com/Fo...grid?forum=wpf
تغییر رنگ زمینه ی ردیف خاص ، همون مثل قضیه ی شماره ی 1 در خط بالا هست .
عذر میخوام، نمیدونم چرا تصویر رو فراموش کردم پیوست کنم به پست، الان پیوست کردم به پست قبلی
----
تو itemcontrol برا بحث خوندن نوشتن آیتم ( ردیف، رکورد...) هاش، از کد زیر استفاده کردم و نتیجه گرفتم؛ حال با توجه به این که نیازی ندارم داده ها توسط کاربر تغییر داده بشه، پس دلیلی هستش که itemcontrol رو ول کنم و برم از datagrid استفاده کنم؟ ( با توجه به عکس پست قبلیم، چیزی که طراحی کردم/کد زدم )
// Read
MessageBox.Show((icQuranTarjome.Items[1] as Model).Tarjome);
// Edit
(icQuranTarjome.Items[1] as Model).Tarjome = "";
------
اما یه سوال اساسی، کلا کل داده ها رو یکجا بدیم به datagrid/itemcontrol بهتره یا صفحه صفحه ( که میشه حدودا 10 آیه 10 آیه، با فرض این که هر صفحه حاوی 10 آیه/رکورد/ردیف هستش )، یا این که این موضوع اصلا اهمیت آنچنانی نداره و...
آخرین ویرایش به وسیله md3848 : پنج شنبه 11 دی 1399 در 03:14 صبح