PDA

View Full Version : انتخاب شدن نود پدر به جای نود فرزند در treewiew



هاجر22
دوشنبه 21 آذر 1390, 23:09 عصر
سلام من یک ساختار درختی در پروژم دارم که با کلیک روی هر نود باید صفحه ای باز بشه و متنی رو نمایش بده حالا مشکلی که هست اینه که وقتی روی نودی که فرزندی ندارم کلیک می کنم همه چیز درسته و مشکلی نیست ولی وقتی روی نود فرزند کلیک می کنم اول صفحه مورد نظر را باز می کنه ولی سریعا نود پدر آن رو انتخاب می کنه و در نتیجه هیچ مقداری فرستاده نمیشه و مجددا صفحه ای باز می شه که هیچ متنی در اون نیست یعنی با کلیک روی نود فرزند دو صفحه باز می شه که صفحه دوم روی صفحه اول می افته
در ضمن از مدیران محترم خواهشمند هستم اگر پستی رو قفل می کنند لااقل امکان دسترسی خود شخص به اون پست رو بدند در ثانی خوب من واقعا با ساختار درختی مشکل داشتم دیگه

Amir Oveisi
چهارشنبه 23 آذر 1390, 12:06 عصر
شما event اي رو براي treeviwe هندل كرديد آيا؟ اگر آره چه event اي؟

هاجر22
چهارشنبه 23 آذر 1390, 13:31 عصر
سلام بله از selectedItem-Changed استفاده کردم تا هر بار یک که آیتم انتخاب می شود متن مورد نظر را لود کند

Amir Oveisi
پنج شنبه 24 آذر 1390, 09:06 صبح
اگر كدتون رو قرار بديد بهتر ميشه.

هاجر22
پنج شنبه 24 آذر 1390, 19:18 عصر
سلام من اول یک textbox را به مقدار انتخاب شده از ساختار درختی بایند کرده ام. (می خواستم مقدار رو ببینم) و از کد زیر استفاده کردم

private void treeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
{
string txtAddress=textBox.Text;
new learning(txtAddress).Show();
}

صفحه learning صفحه ای است که یک flowDocumentViewer در آن قرار دارد و مقدار آدرس آن توسط پارامتر txtAddress ارسال میشه. همه چیز درست کار می کنه ولی مشکل این جاست که بعد از انتخاب نود فرزند ابتدا صفحه مورد نظر باز میشه و متن رو نمایش می دهد ولی بلافاصله نود پدر انتخاب شده و یک صفحه جدید باز میشه که هیچ متنی در اون نیست

Amir Oveisi
پنج شنبه 24 آذر 1390, 23:06 عصر
داخل همین کد قبل از Show کردن پنجره جدید این کد رو اضافه کنید ببینید چه نتیجه ای میده:
e.Handled = true;

هاجر22
جمعه 25 آذر 1390, 13:45 عصر
سلام . ممنون که جواب دادید. از این کد استفاده کردم دیگه نود پدر انتخاب نمیشه (میشه توضیح بدید چه اتفاقی افتاد)
ولی یک مشکل هنوز هست صفحه ای که باید باز بشه می ره زیر صفحه اصلی و در منوی taskbar قابل دسترسی است. فکر کنم هنوز نود پدر انتخاب می شه ولی پارامتری ارسال نمیشه

Amir Oveisi
شنبه 26 آذر 1390, 11:09 صبح
SelectedItemChanged در TreeView از استراتژي Bubbling استفاده مي كنه. (رجوع كنيد به Routing Strategy در Routed Event ها). يعني از كنترل فرزند شروع ميشه و به صورت حبابي در Visual Tree بالا ميره و هر جا handler اي براش وجود داشته باشه در اين مسير اونا اجرا ميشن. وقتي Handled رو به true مقدار ميديد مشخص مي كنيد كه ديگه هيچ handler اي اين event رو در طول Visual Tree،هندل نكنه.
حالا اين مشكلتون كه ميگيد ميره زير صفحه ديگه، نميدونم دقيقا چه اتفاقي تو برنامتون ميفته. توضيحات بيشتري بايد بديد فكر كنم.

هاجر22
شنبه 26 آذر 1390, 11:30 صبح
سلام. ممنون به خاطر توضیحاتتون. ببینید قبلا هم در واقع همین انتخاب می شد. یعنی وقتی برای اولین بار روی نود فرزندکلیک می کردم اول متن مربوط به فرزند باز می شد بعد بلافاصله صفحه اصلی که ساختار درختی در آن قرار دارد روی صفحه متن قرار می گرفت و نود پدر انتخاب می شد. و دوباره صفحه حاوی متن باز می شد که هیچ متنی در اون نبود. یعنی سه صفحه باز وجود داشت. ولی حالا دیگر صفحه سوم باز نمی شود چون به سفارش شما از آن دستور استفاده کردم ولی مثل قبل صفحه حاوی متن فرزند زیر صفحه مربوط به ساختار درختی قرار می گیرد.
اصلا آیا راه حل بهتری نیست؟ اگر شما جای من بودید از چه روشی استفاده می کردید؟

هاجر22
دوشنبه 28 آذر 1390, 20:00 عصر
سلام. بالاخره راه حلی پیدا نکردم. مجبور شدم یه جوری سرش رو کلاه بذارم. بعد از دستور Show ساختار درختی رو غیر فعال کردم. جواب داد