• דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

WPF ScrollViewer גלילה עם עכבר

מתוזמן נעוץ נעול הועבר ארכיון code613m
8 פוסטים 2 כותבים 412 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים
    כתב ב נערך לאחרונה על ידי
    #1

    החלון שלי נראה כך:

    <Window x:Class="Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <ScrollViewer VerticalScrollBarVisibility="Auto"
                          HorizontalScrollBarVisibility="Auto">
                <StackPanel Orientation="Horizontal">
                    <Button Width="111" Height="111">1</Button>
                    <Button  Width="111" Height="111">2</Button>
                    <Button  Width="111" Height="111">3</Button>
                    <Button  Width="111" Height="111">4</Button>
                </StackPanel>
            </ScrollViewer>
        </Grid>
    </Window>
    

    מדוע כאשר אני גולל עם העכבר פס הגלילה האופקי לא זז?
    רק כאשר מוגדר:

    <StackPanel Orientation="Vertical">
    

    הגלילה של העכבר מזיזה את פס הגלילה האנכי.

    פורסם במקור בפורום CODE613 ב23/03/2014 10:20 (+02:00)

    תוכנות שפיתחתי: חיפוש במסמכים, תוכנת עימוד, OCR, נקדן חינמי

    תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #2

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

    בכל אופן אתמקד בפיתרון בעיה בניסוח זה: "איך לשייך את גלגלת העכבר לגלילה האופקית".
    אז אין אופציה מובנית. צריך ללכוד את אירוע הגלילה (PreviewMouseWheel) ו"להזיז".

    פורסם במקור בפורום CODE613 ב23/03/2014 12:02 (+02:00)

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    1
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים
    כתב ב נערך לאחרונה על ידי
    #3

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

    פורסם במקור בפורום CODE613 ב23/03/2014 12:09 (+02:00)

    תוכנות שפיתחתי: חיפוש במסמכים, תוכנת עימוד, OCR, נקדן חינמי

    תגובה 1 תגובה אחרונה
    0
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים
    כתב ב נערך לאחרונה על ידי
    #4

    טוב, אז עשיתי קוד כזה:

    Private Sub ScrollViewer_PreviewMouseWheel(sender As Object, e As MouseWheelEventArgs)
            Dim sv = DirectCast(sender, ScrollViewer)
            If sv.ComputedHorizontalScrollBarVisibility = Visibility.Visible AndAlso _
               (sv.ComputedVerticalScrollBarVisibility = Visibility.Hidden OrElse _
                sv.ComputedVerticalScrollBarVisibility = Visibility.Collapsed) Then
                If e.Delta > 0 Then
                    sv.ScrollToHorizontalOffset(sv.HorizontalOffset + 11)
                Else
                    sv.ScrollToHorizontalOffset(sv.HorizontalOffset - 11)
                End If
            End If
        End Sub
    

    בחרתי באופן שרירותי את המספר 11, אבל האם יש דרך לדעת מה המספר המדוייק שיש להזיז על פי הגדרות המערכת או משהו כזה?

    פורסם במקור בפורום CODE613 ב23/03/2014 12:19 (+02:00)

    תוכנות שפיתחתי: חיפוש במסמכים, תוכנת עימוד, OCR, נקדן חינמי

    תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #5

    משהו כזה:

    sv.ScrollToHorizontalOffset(sv.HorizontalOffset - e.Delta)
    

    פורסם במקור בפורום CODE613 ב23/03/2014 12:47 (+02:00)

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    1
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #6

    @רחמים

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

    לא בשביל להשאיר לך עבודה אלא בגלל שזה פונקציונליות לא מתבקשת במקרים רגילים.

    פורסם במקור בפורום CODE613 ב23/03/2014 12:50 (+02:00)

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    0
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים
    כתב ב נערך לאחרונה על ידי
    #7

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

    פורסם במקור בפורום CODE613 ב23/03/2014 12:57 (+02:00)

    תוכנות שפיתחתי: חיפוש במסמכים, תוכנת עימוד, OCR, נקדן חינמי

    תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #8

    בסוף המתודה תכתוב

    e.handled = True
    

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

    פורסם במקור בפורום CODE613 ב23/03/2014 13:02 (+02:00)

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    1

  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.