PDA

View Full Version : فیلتر در Collectionviewsource



iranrose63
چهارشنبه 25 خرداد 1390, 10:47 صبح
سلام
من چه طور میتونم تو یه collectionviewsource که نمی دونم آیتم های اون از چه نوعیند filter انجام بدم در واقع collectionviewsource من میتونه List های مختلف را به عنوان source دریافت کنه حالا من باید بتونم بفهمم که source از چه نوعیه و بعد فیلتر انجام بدم.

مهدی فرزاد
چهارشنبه 25 خرداد 1390, 11:08 صبح
سلام
این لینک ها رو ببیندید
http://bea.stollnitz.com/blog/?p=31
http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.filter.as px

iranrose63
چهارشنبه 25 خرداد 1390, 12:08 عصر
ممنون ولی شمت متوجه منظور من نشدید


.....
collectionView.Filter = new Predicate<object>(FilterOutA);
}

public bool FilterOutA(object item)
{
GreekGod gg = item as GreekGod;
if ((gg == null) || gg.RomanName.StartsWith("A"))
{
return false;
}
else
{
return true;
}
}




من نمیدونم آیتم ها از چه نوعیند (GreekGod در کد بالا برای من در واقع object است )پس چه طور فیلتر انجام بدم

مهدی فرزاد
چهارشنبه 25 خرداد 1390, 12:20 عصر
میشه بیشتر توضیح بدیدچرا object و کلا چه روشی بکار بردید؟؟

mehrvarz9
پنج شنبه 26 خرداد 1390, 01:03 صبح
با سلام

اگر منظور شما این هست که بدون دانستن نوع یک Object مقدار یکی از Property های اون رو بدست بیارید می تونید از روش زیر استفاده کنید.


item.GetType().GetProperty("PropertyName").GetValue(item,null);

مهدی فرزاد
پنج شنبه 26 خرداد 1390, 01:56 صبح
اینم یک مثال
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
List<MyClass> m = new List<MyClass>();
m.Add(new MyClass { MyProperty1 = "Mehdi", MyProperty2 = "Farzad" });
m.Add(new MyClass {MyProperty1 ="Reza", MyProperty2 = "Farzad"});

foreach (object item in m)

{
if (item.GetType().GetProperty("MyProperty1").GetValue(item, null).ToString().StartsWith("M") == true)
MessageBox.Show("TRUE");
}
}


}
class MyClass
{
public string MyProperty1 { get; set; }
public string MyProperty2 { get; set; }
}