Tuesday, October 09, 2012

Binding לפונקציה עם ObjectDataProvider

ObjectDataProvider מאפשר לעטוף פונק' של C# ולאפשר לה להיות זמינה ל Binding  כ Resorce .

לדוגמא ניקח תוכנית שממירה מרחקים מ מיילים ל קילומטרים :  

Inline image 1

                  ניצור 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 . מה שנשאר זה לקשר כל איבר למקומו.

QR: Inline image 3

Posted via email from Jasper-Net