locked
איך מוצאים את אינדקס האייטם שמוצג במסך ב-GridView או FlipView RRS feed

  • שאלה

  • ב-GridView למשל אני מעוניין לדעת את האלמנט הראשון  או האחרון שמופיע במסך.

    וב-FlipView למשל מתי שלא מדפדפים על ידי כפתורי הניווט אלא בעזרת פס הגלילה, האלמנט הנבחר לא משתנה לזה המוצג במסך. איך אני יודע איזה אינדקס נמצא על המסך כדי שכל פעם יבחר את האלמנט המוצג על המסך. כדי שאחרי הגלילה אם לוחצים על כפתורי הניווט לא יקפוץ בתצוגה לאלמנט הנבחר.

    ודרך אגב למה גלגלת העכבר לא מגלגלת את פס הגלילה. באפליקציות של מיקרוסופט כמו דף ההתחלה או קבצים תמונות הגלגלת עובדת. - כנראה שיש איזה שהוא מאפיין שלא הגדרתי?

    תודה צבי.


    צבי דויטש


    יום שני 28 ינואר 2013 13:22

תשובות

  • היי,

    קצת באיחור, אבל עדיף מאוחר מאשר אף פעם...

    בגדול, אני עושה שימוש ב- VisualTreeHelper.FindElementsInHostCoordinates כדי לקבל את כל האלמנטים הויזואלים שתחומים במלבן. ואז אני עושה שימוש ב- ItemContainerGenerator.IndexFromContainer כדי לקבל את ה- Index:

    var elements = VisualTreeHelper.FindElementsInHostCoordinates(new Rect(0, 0, gridView.ActualWidth, gridView.ActualHeight), gridView, false);
    foreach (var element in elements.OfType<GridViewItem>())
    {
        var index = gridView.ItemContainerGenerator.IndexFromContainer(element);
    }

    האינדקס הראשון זה האלמנט האחרון שמוצג, והאחרון הוא הראשון.

    מקווה שעזרתי.

    תומר


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    יום ראשון 16 יוני 2013 18:58
    מנחה דיון

כל התגובות

  • כדי למצוא את ה index שנמצא עכשיו על המסך אתה יכול להשתמש ב

    flipView.currentPage

    וכדי לאפשר גלילה ע"י גלגלת העכבר צריך לערוך את ה Style של FlipView ולקבוע כך 

    <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="True" />

    בהצלחה


    • נערך על-ידי shmuel k יום ראשון 09 יוני 2013 14:58
    יום ראשון 09 יוני 2013 14:58
  • דבר ראשון תודה על המענה.

    דבר שני ניסיתי את להפוך את המאפיין IsVerticalRailEnabled ל-TRUE וזה לא עזר כלום גם את הפס גלילה המאוזן כשהפכתי לTRUE לא עזר כלום. (העתקתי את הסטייל שהוא משתמש בברירת המחדל שמופיע ב-MSDN ושיניתי לTRUE בשנייהם נתתי לו שם וקבעתי את הסטייל של הFLIPVIEW  אליו.), ולגבי זה אני ישמח מאד אם תוכל לעזור לי.

    דבר שלישי לגבי ה-CurrentPage זה כמובן בשפת JAVA וב-C# אין לו מקביל, או שהכוונה ל-SelectedIndex שזה לא עוזר כיון שזה לא האלמנט המוצג על המסך. אני מתכוון למקביל למאפיין שהיה בווינדוס פורום "FirstDisplayRow" באובייקט "DataGridView". דרך אגב יש פיתרון לבעייה הזאת כי עלי ידי מציאה של ה-ScrollVIewer ובתוכו למצא את ה-ScrollBar ובתוכו למצא את ה-VerticalSCrollBar ולהשתמש באירוע SCROLL שיש לו בארגומנט את האחוז הנוכחי על הדף. רק שזה עוזר לFILPVIEW בלבד כיון ששם האלמנט בגודל של דף שלם. אבל בגריד ויו זה לא יעזור.


    צבי דויטש

    יום שני 10 יוני 2013 05:42
  • היי,

    קצת באיחור, אבל עדיף מאוחר מאשר אף פעם...

    בגדול, אני עושה שימוש ב- VisualTreeHelper.FindElementsInHostCoordinates כדי לקבל את כל האלמנטים הויזואלים שתחומים במלבן. ואז אני עושה שימוש ב- ItemContainerGenerator.IndexFromContainer כדי לקבל את ה- Index:

    var elements = VisualTreeHelper.FindElementsInHostCoordinates(new Rect(0, 0, gridView.ActualWidth, gridView.ActualHeight), gridView, false);
    foreach (var element in elements.OfType<GridViewItem>())
    {
        var index = gridView.ItemContainerGenerator.IndexFromContainer(element);
    }

    האינדקס הראשון זה האלמנט האחרון שמוצג, והאחרון הוא הראשון.

    מקווה שעזרתי.

    תומר


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    יום ראשון 16 יוני 2013 18:58
    מנחה דיון
  • תודה רבה ממש לא שמתי לב שקיים למצא על פי קאורדינטות זה פוטר הרבה בעיות שמפתחי האובייקטים לא טרחו לממש.

    על זה אני מסמן כתשובה.

    אבל לגבי הגלגלת אני ישמח מאד לפתרון כי האפליקצייה שלי תהיה לוקה בחסר מאד אם לא יהיה גלגלת של העכבר.

    ואולי צריך לפתוח לזה שרשור נפרד.


    צבי דויטש

    יום שני 17 יוני 2013 10:20
  • אשמח אם תפתח שאלה חדשה בקשר לבעיית הגלגלת.

    באופן כללי מומלץ לפצל את השאלות מראש.

    תודה,

    תומר


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    יום שני 17 יוני 2013 10:25
    מנחה דיון