My problem is that the ScrollViewer only scrolls when the mouse cursor is hovering one of the textblocks or any other UIElement. When the cursor is over the margin space (colored in red in image) scrolling is ignored.

Here you can see a example created in Silverlight 5: ScrollViewer

I have tried to use Grid instead of StackPanel without success. Changing margin to padding seems to work better but there are also other elements on my control which have margin and I'd like to use margin if possible.
I've tried to search here and Google but noone seems to have the same problem.

Why doesn't this work?

Here is a example code which demonstrates the behavior:

<UserControl x:Class="cwtest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="Margin" Value="30"></Setter>
    </Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
    <ScrollViewer Height="300" Width="500">
        <StackPanel>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
            <TextBlock Text="Text Text Text Text Text Text Text Text Text Text Text Text Text Text "></TextBlock>
        </StackPanel>
    </ScrollViewer>
</Grid>
</UserControl>
有帮助吗?

解决方案

It just needs something to make it hit test visible which is easy as adding Background="Transparent" like;

<ScrollViewer Height="300" Width="500" Background="Transparent">

or put in your background color or something if you want. I know seems retarded, but it's all you need.

Hope this helps.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top