استفاده از DataTemplate در ComboBox
با سلام
من برای پر کردن کامبوباکسم از DataTemplate استفاده می کنم و DataTemplate ام از چندتا فیلد تشکیل شده و وقتی از DataTemplate برای بایند کردن ItemTemplate استفاده می کنی دیگه نمی شه از DisplateMemberPath استفاده کرد یعنی نمی شه هم زمان از این دو تا Property استفاده کرد و برای اینکه بتونم تو خود Text کامبو باکس مقدار نشون بدم از TextSearch.TextPath مثل DisplayMemberPath میشه استفاده کرد اما از این برای نشون دادن یک فیلد می شه استفاده کرد و برای نشون دادن چند فیلد کنار هم چیکار بایستی کرد با تشکر
2 ضمیمه
نقل قول: استفاده از DataTemplate در ComboBox
سلام
من این دو راه رو پیشنهاد میکنم
مثال های زیر رو ببین
در هر دو مثال دیگه از DisplateMember استفاده نکردم و برای برگردندن مقدار ComboBox از
SelectedItem
استفاده شده
برای اولی متد ToString جدول مربوطه رو override کردم
ولی در دومی SelectedItem به نوع جدولم تبدیل کردم و هر فیلدی رو که میخوام خروجی گرفتم
1 ضمیمه
نقل قول: استفاده از DataTemplate در ComboBox
با سلام آقای فرزاد
ممنون از جوابتون من از ObjectDataProvider برای پر کردن منبع داده ام استفاده می کنم و مثال شما رو تغییر دادم و شبیه مشکل خودم کردم و ببینید و به اون TextSearch.TextPath هم دقت نمایید اگر اون TextSearch رو پاک کنی می بینید مشکل من کجاست با تشکر
1 ضمیمه
نقل قول: استفاده از DataTemplate در ComboBox
سلام مجدد
همون راه اول جواب میده و میتونی با راه دوم ترکیب کنی
مثال شما رو اینجوری کردم
publicclassPersonalcs
{
publicstring FName { get; set; }
publicstring LName { get; set; }
publicoverridestring ToString()
{
returnstring.Format("{0} {1}", FName, LName);
}
}
و در نهایت
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show((this.comboBox1.SelectedItem as Personalcs).FName);
MessageBox.Show((this.comboBox1.SelectedItem as Personalcs).LName);
MessageBox.Show(this.comboBox1.SelectedItem.ToStri ng());
}
1 ضمیمه
نقل قول: استفاده از DataTemplate در ComboBox
سلام
یک راه دیگه به ذهنم رسید که انعطاف بالاتری داره
شما یک Property یا چند Property دیگه به کلاست اضافه میکنی (هر کدوم میتونه ترکیبی از چند فیلد جدول رو برگردونه) مثلا برای مثال شما اونی که Bold شده رو اضافه کردم
public class Personalcs
{
public string FName { get; set; }
public string LName { get; set; }
public string FLName { get { return FName + " " + LName; } } //Bold
}
public class PersonalcsRestore
{
public List<Personalcs> Get_Personal()
{
List<Personalcs> mylist = new List<Personalcs>()
{
new Personalcs{FName="Mehdi",LName="Farzad"},
new Personalcs{FName="Petek",LName="Dincos"}
};
return mylist;
}
}
حالا میتوند از همون روش خودتون یعنی
<ComboBox TextSearch.TextPath="FLName"
استفاده کنید
خوبی این روش اینه که شما به هر تعداد و با هر تکریبی که خواستی میتونید Property بسازی و برای کمبو های مختلف استفاده کنی