ورود

View Full Version : سوال: انتخاب یک آیتم از ObservableCollection و نمایش اطلاعات آن در TextBox



OmMiD_MtWo
دوشنبه 31 شهریور 1393, 19:57 عصر
با سلام خدمت دوستان عزیز

متاسفانه در قسمتی از برنامه به مشکلی برخوردم که ممنون میشم راهنماییم کنید.

قصد دارم یکی از آیتم های ListView که ItemSource آن به یک ObservableCollection از نوع کلاس Student متصل هست را انتخاب کنم و با زدن دکمه ی ویرایش، اطلاعات دانشجوی انتخاب شده در فرم جدید که حاوی TextBoxهای دریافتی اطلاعات است نمایش داده شود. ولی متاسفانه هر کدوم از آیتم های ListView رو که انتخاب میکنم، تنها آیتمی که در آخر به ListView اضافه شده، در فرم جدید نمایش داده میشه. میخواستم بپرسم از طریق چه دستوری میتونم اطلاعات دانشجوی انتخابی در ListView رو در ObservableCollection پیدا کنم و در فرم جدید نمایش بدم؟

سپاسگزار میشم راهنماییم کنید

rg_BlackRose
پنج شنبه 10 مهر 1393, 17:42 عصر
سلام

بر فرض کلاس Student به این شکل تعریف شده باشه

class student
{
public int id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}


و ListView در فرم اول به این شکل

<ListView Name="LST1">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding id}" Header="Id" />
<GridViewColumn DisplayMemberBinding="{Binding FirstName}" Header="FirstName" />
<GridViewColumn DisplayMemberBinding="{Binding LastName}" Header="LastName" />
<GridViewColumn DisplayMemberBinding="{Binding Age}" Header="Age" />
</GridView>
</ListView.View>
</ListView>


حال تکست باکسهای فرم دوم رو به این صورت بایند کنید به یکی از آیتمهای کلاس Student

<StackPanel>
<TextBox Text="{Binding id}" />
<TextBox Text="{Binding FirstName}" />
<TextBox Text="{Binding LastName}" />
<TextBox Text="{Binding Age}" />
</StackPanel>


حال با فرض اینکه در رویداد لود فرم اول با کدهای زیر مقادیری رو به ListViw اضافه بکنیم.

ObservableCollection<student> Students = new ObservableCollection<student>();


Students.Add(new student { id = 1, FirstName = "dfgdfg", LastName = "erwer", Age = 23 });
Students.Add(new student { id = 2, FirstName = "dfgs", LastName = "fdgs", Age = 76 });
Students.Add(new student { id = 3, FirstName = "azwgyt", LastName = "regd", Age = 23 });
Students.Add(new student { id = 4, FirstName = "ruktjn", LastName = "ukmuj", Age = 43 });
Students.Add(new student { id = 5, FirstName = "eWGJ", LastName = "45htj", Age = 33 });


LST1.ItemsSource = Students.ToList();


و در پایان با فرستاده آیتم انتخاب شده از ListView در فرم اول به DataContext فرم دوم و به نمایش در آوردن فرم دوم کار تمام هست.
مثال : کدهای کلیک دکمه ویرایش

if(LST1.SelectedItems.Count ==1)
{
Window1 objw1 = new Window1();


objw1.DataContext = LST1.SelectedItem;


objw1.ShowDialog();
}