UWP ScrollViewer.TopHeader с SkiaSharp не рисует - PullRequest
0 голосов
/ 26 января 2020

Я хочу использовать SkiaSharp Canvas в ScrollViewer, но не только в основном контенте, но также в TopHeader и LeftHeader. События рисования вызываются, лыжи рисуют, но результат не отображается на экране, только в основном контенте.

вот пример:

<ScrollViewer
    HorizontalScrollBarVisibility="Visible"
    HorizontalScrollMode="Enabled"
    VerticalScrollBarVisibility="Visible"
    VerticalScrollMode="Enabled">
    <ScrollViewer.TopHeader>
        <Grid
            Width="{Binding ElementName=Canvas, Path=ActualWidth}"
            Height="30"
            Background="LightGray">
            <TextBlock Text="Hello" />
            <skia:SKXamlCanvas
                x:Name="TopHeaderCanvas"
                Margin="0"
                HorizontalAlignment="Stretch"
                VerticalAlignment="Stretch"
                PaintSurface="OnPaintTopHeader" />
        </Grid>
    </ScrollViewer.TopHeader>
    <ScrollViewer.LeftHeader>
        <skia:SKXamlCanvas
            Width="60"
            Height="{Binding ElementName=Canvas, Path=ActualHeight}"
            Background="Gray"
            PaintSurface="OnPaintLeftHeader" />
    </ScrollViewer.LeftHeader>
    <ScrollViewer.Content>
        <skia:SKXamlCanvas
            x:Name="Canvas"
            Width="4000"
            Height="3500"
            Margin="0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            PaintSurface="OnPaintMainContent" />
    </ScrollViewer.Content>
</ScrollViewer>

Как вы можете видите, я попробовал скайп острый холст в завернутый в сетку, прямо под ScrollViewer. К сожалению, это не помогает.

Вот результат.
enter image description here

Слева абсолютно пусто, но оно должно быть заполнено HotPink, и TopHeader просто отображает Grid со словом «hello», но он должен быть покрыт холстом и заполнен зеленым цветом.

У кого-нибудь есть идея, почему skia не работает в ScrollView TopHeader и Left Header?

Nuget SkiaSharp, содержащий холст: https://www.nuget.org/packages/SkiaSharp.Views/1.68.2-preview.21

А вот пример SkiaSharp: https://github.com/mono/SkiaSharp/tree/master/samples/Basic/UWP/SkiaSharpSample

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Это была ошибка в SkiaSharp. Исправлено: https://github.com/mono/SkiaSharp/pull/1133

Спасибо: mattleibow

0 голосов
/ 28 января 2020

UWP ScrollViewer.TopHeader с SkiaSharp не рисует

Я мог воспроизвести вашу проблему, и я попытался перерисовать холст в пределах PaintSurface, но он также не работает, пожалуйста не стесняйтесь опубликовать этот вопрос в SkiaSharp github, и я сообщу об этом команде.

...