locked
ScrollViewer איזה event מתאים לגרירה של הגלגלת? RRS feed

  • שאלה

  • היי,

    אני רוצה לממש התנהגות כזו ש scrollViewer של החלון שלי בברירת מחדל תמיד מתעדכן להיות הכי למטה :
    אני מבצע זאת באופן הבא:

            <ScrollViewer VerticalScrollBarVisibility="Auto" Name="SViewer">
                <StackPanel Name="SP_terminal">
                </StackPanel>
            </ScrollViewer>

    ובקוד C# אני מוסיף כל מיני אלמנטים לתוך הstackPanel ומעדכן את הגלגלת של החלון להיות למטה ע"י ScrollToBottom באופן הבא:


                TextBlock myTextBlock = new TextBlock();
                myTextBlock.Text = "bla bla";
                SP_terminal.Children.Add(myTextBlock);
                SViewer.ScrollToBottom();

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

    תודה!

    יום רביעי 22 אוגוסט 2012 12:36

תשובות

  • נסה לשחק עם MouseWheel ועם ScrollChanged, או לחלופין עם MouseEnter 

    כמו כן,  הוסף הנדלר ל LostFocus או ל MouseLeave  שיקרא למתודה SViewer.ScrollToBottom

    אני מניח שאתה לא עובד עם Behaviors, לכן הייתי מציע משהו כזה:
    כל פעם שאתה מוסיף אלמנט לSP_terminal בדוק עליו תנאי לוגי כלשהו, לדוגמא IsFocused או IsMouseOver , וקריאה ל ScrollToBottom רק אם התנאי לא מתקיים

    • הוצע כתשובה על-ידי Elad R Katz שבת 25 אוגוסט 2012 15:57
    • סומן כתשובה על-ידי Gilu86 יום רביעי 29 אוגוסט 2012 05:37
    יום חמישי 23 אוגוסט 2012 13:51