PDA

View Full Version : سوال: در هر زمان فقط یک Expander باز وجود داشته باشد



PetekDincos
شنبه 02 بهمن 1389, 17:46 عصر
با سلام
من چند تا کنترل Expander در داخل یک Grid دارم و می خوام اگه یک Expander ای الان باز است وقتی Expander دیگه باز شد Expander قبلی بسته بشه با تشکر

مهدی فرزاد
یک شنبه 03 بهمن 1389, 08:21 صبح
سلام

شما میتونید برای اون گرید یک اسم بگذارید مثلا grid بعد یک متد درست کنید و به شکل زیر و رویداد Expanded تمام EXpender ها رو به اون متصل کنید


privatevoid expander_Expanded(object sender, RoutedEventArgs e)
{
Expander exp = (Expander)sender;
foreach (UIElement item in grid.Children)
{

if (item isExpander)
{
if (((Expander)item).Name != exp.Name)
((Expander)item).IsExpanded = false;
}
}
}



اما پیشنهاد بهتر :
شما میتونید یک Accordion menu بسازید
روش ساخت اون بسیار ساده است
لینک زیر رو ببینید آموزش داده
http://silverzine.com/tutorials/creating-a-custom-accordion-menu-in-blend/
در آموزش بالا هر کجا مشکل داشتید بگید من توضیح میدم ولی انقدر روان و ساده هست که فکرنکنم مشکلی داشته باشید

همچنین لینک زیر هم میتونه مفید باشه
http://www.rooijakkers.net/Blog/post/2007/11/WPF-implementation-of-a-basic-Accordion-control.aspx

PetekDincos
دوشنبه 25 بهمن 1389, 22:28 عصر
با سلام آقای مهدی فرزاد
من از لینک دومی که در تاپیک بالا اشاره کردید استفاده کردم که یک کلاس Accodion در این لینک وجود دارد که این کلاس درست کار می کنه اما وقتی از این کلاس استفاده می کنیم اندازه Height ای که در داخل کنترل Expander داده می شه اون رو همیشه به یک اندازه نشون نمی ده و اگر امکانش است برای لینک اول یه مثال قرار بدید ممنون می شم با تشکر

مهدی فرزاد
سه شنبه 26 بهمن 1389, 18:10 عصر
سلام

به نظر من اگه براتون حالت انیمشنی کار مهم نیست از همون راهی که من کدش رو نوشتم برید
فایل ضمیمه به نام Expander1 مثال همین حالته
و اگه دوست دارید انیمیشن باشه لینک اول روش مناسب
من یک مثال با همین روش درست کردم میتونید در فایل ضمیمه Expander2 ببینید(من اینو می پسندم و در اولین فرصت به صورت ویدئویی آموزشش روش ساختش رو میگذارم)
کمی دردسر داره ولی زیبا میشه