我正在为Silverlight 3应用程序中的某些文档进行一种“打印预览”控件.我在ScrollViewer中有一个Canvas(用于显示文档),我有放大/缩小按钮,用于控制Canvas.RenderTransform属性的ScaleTransform的X和Y Scale属性.我希望ScrollViewer的滚动条在我“放大”时显示,以便画布在ScrollViewer区域中不再可见,但似乎它们只显示取决于画布本身的宽度/高度,无论如何是否放大.
有人可以帮忙吗?
解决方法
是的,问题是Silverlight中没有LayoutTransform.列出
here这个问题有一些解决方法.
这里的想法是提供一个调整大小的中间画布,从而调整可滚动区域的大小.例如,如果我有以下XAML:
<Grid x:Name="LayoutRoot"> <Grid.RowDeFinitions> <RowDeFinition Height="200" /> <RowDeFinition Height="25" /> </Grid.RowDeFinitions> <ScrollViewer Grid.Row="0" x:Name="sc" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Width="200" Height="200" > <Canvas x:Name="sizer" Width="200" Height="200"> <Rectangle x:Name="gradientRect" Width="200" Height="200"> <Rectangle.RenderTransform> <ScaleTransform ScaleX="1" ScaleY="1"/> </Rectangle.RenderTransform> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="Red" Offset="0.1"/> <GradientStop Color="Yellow" Offset="0.5"/> <GradientStop Color="Red" Offset="0.9"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> </Canvas> </ScrollViewer> <Button Grid.Row="1" Content="Multiply by Two" Click="ScaleRect" Width="100" Height="25"></Button> </Grid>
你会注意到我把< Canvas x:Name =“sizer”/> < ScrollViewer />之间和<矩形/>以及< Button />中的ScaleRect的click事件.
ScaleRect子项简单地将矩形缩放2.然后,该值用于更改sizer Width和Height,从而更新ScrollViewer的滚动条.这是ScaleRect的子项:
Private Sub ScaleRect(ByVal sender As Object,ByVal e As RoutedEventArgs) Dim zoom As Double = 2.0 Dim scaleX = gradientRect.RenderTransform.GetValue(ScaleTransform.ScaleXProperty) Dim scaleY = gradientRect.RenderTransform.GetValue(ScaleTransform.ScaleYProperty) gradientRect.RenderTransform.SetValue(ScaleTransform.ScaleXProperty,scaleX * zoom) gradientRect.RenderTransform.SetValue(ScaleTransform.ScaleYProperty,scaleY * zoom) sizer.Height *= zoom sizer.Width *= zoom End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。