ObjectDataProvider מאפשר לעטוף פונק' של C# ולאפשר לה להיות זמינה ל Binding כ Resorce .
לדוגמא ניקח תוכנית שממירה מרחקים מ מיילים ל קילומטרים :
ניצור Class בשם DistanceConverter שמכיל את פונק' ההמרה בשם Convert . זו פונק' רגילה שממירה מרחק ממטרים לקילומטרים ולהיפך.
קודם ניצור enum שמכיל את סוגי המידות :
public enum DistanceType
{
Miles,
Kilometres
}
כעת הפונק' Convert :
public string convert(double amount, DistanceType distancetype)
{
if (distancetype == DistanceType.Kilometres)
return (amount * 1.5).ToString() + "km";
else
return (amount * 0.5).ToString() + "ml";
}
כעת אנו נרצה ליצור ObjectDataProvider :
המבנה הכללי שלו נארה כך :
<ObjectDataProvider
x:Key="objProviderשם שאנוחנו בוחרים שייצג את "
ObjectType="{x:Type local:myClass יצירת מופע למחלקה }"
MethodName="שם של הפונק'" >
<!—כאן נצהיר על הפרמטרים שנרצה בפונק' הם ייוצגו אח"כ בצורת מערך.-->
<ObjectDataProvider.MethodParameters>
<system:Doubleסוג הפרמטר הראשון>0 ערך שאנו מכניסים לו</system:Double>
<Recipe_05_07:DistanceType>Miles</Recipe_05_07:DistanceType>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
הערה: הפרמטר הראשון של הפונק היה Double , כדי לטעון לפונק' ערך מסוג זה נצטרך קודם לכך לטעון את ה xmlns הבא :
xmlns:system="clr-namespace:System;assembly=mscorlib"
ברגע זה הפונק' מוכנה ל Binding . מה שנשאר זה לקשר כל איבר למקומו.
Read more: מילים בדוט נט
QR: