无法在Silverlight中将样式应用于ScrollViewer

时间:2014-10-17 08:40:41

标签: silverlight styles scrollviewer

ScrollViewer是与WrapPanel合作的好东西,因为当内容溢出时,我们可以使用ScrollViewer来显示隐藏的内容。 在我当前的项目中,我使用WrapPanel作为容器,ScrollViewer作为组件来显示隐藏的部分。但是现在我在向scrollviewer设置样式时遇到了问题,问题是:但是我将样式设置为scrollviewer,它不会改变一点。这是风格:

<Style x:Key="CustomScrollViewerStyle" TargetType="ScrollViewer">
    <Setter Property="Padding" Value="4"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="BorderBrush">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFA3AEB9" Offset="0"/>
                <GradientStop Color="#FF8399A9" Offset="0.375"/>
                <GradientStop Color="#FF718597" Offset="0.375"/>
                <GradientStop Color="#FF617584" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ScrollViewer">
                <Border BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}"
                    CornerRadius="2">
                    <Grid Background="{TemplateBinding Background}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <ScrollContentPresenter x:Name="ScrollContentPresenter"
                            Cursor="{TemplateBinding Cursor}"
                            ContentTemplate="{TemplateBinding ContentTemplate}"
                            Margin="{TemplateBinding Padding}"/>
                        <Rectangle Grid.Column="1" Fill="#FFE9EEF4"
                            Grid.Row="1"/>
                        <ScrollBar x:Name="VerticalScrollBar"
                            Grid.Column="1"
                            IsTabStop="False"
                            Maximum="{TemplateBinding ScrollableHeight}"
                            Margin="0,-1,-1,-1"
                            Minimum="0"
                            Orientation="Vertical"
                            Grid.Row="0"
                            Visibility="{TemplateBinding
                                ComputedVerticalScrollBarVisibility}"
                            Value="{TemplateBinding VerticalOffset}"
                            ViewportSize="{TemplateBinding ViewportHeight}"
                            Width="18"/>
                        <ScrollBar x:Name="HorizontalScrollBar"
                            Grid.Column="0"
                            Height="18"
                            IsTabStop="False"
                            Maximum="{TemplateBinding ScrollableWidth}"
                            Margin="-1,0,-1,-1"
                            Minimum="0"
                            Orientation="Horizontal"
                            Grid.Row="1"
                            Visibility="{TemplateBinding
                                ComputedHorizontalScrollBarVisibility}"
                            Value="{TemplateBinding HorizontalOffset}"
                            ViewportSize="{TemplateBinding ViewportWidth}"/>
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

以下是我应用该风格的地方:

<ScrollViewer Grid.Column="0" x:Name="sclViewer"
    Style="{StaticResource CustomScrollViewerStyle}"
    VerticalScrollBarVisibility="Auto" BorderThickness="0">
    <toolkit:WrapPanel
        Width="{Binding ElementName=sclViewer, Path=Width, Mode=OneWay}">
        <uc:UserCPage x:Name="commonUC1" Title="test" VerticalAlignment="Top"/>
    </toolkit:WrapPanel>
</ScrollViewer>

我是Silverlight的新手,我已经检查了很多代码,但找不到导致这个问题的原因。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

最后我通过使用Silverlight间谍解决了这个问题,你可以google它。 我使用这个工具来反映我的应用程序并获得了scrollviewer的所有结构,我复制了xaml结构并更改了一些样式然后将它变成资源字典,最后一切对我来说都没问题。