silverlight – XAML:当子对象的ScaleTransform变大时,让ScrollViewer显示滚动条

silverlight – XAML:当子对象的ScaleTransform变大时,让ScrollViewer显示滚动条,第1张

概述我正在为Silverlight 3应用程序中的某些文档进行一种“打印预览”控件.我在ScrollViewer中有一个Canvas(用于显示文档),我有放大/缩小按钮,用于控制Canvas.RenderTransform属性的ScaleTransform的X和Y Scale属性.我希望ScrollViewer的滚动条在我“放大”时显示,以便画布在ScrollViewer区域中不再可见,但似乎它们只显 我正在为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 *= zoomEnd Sub
总结

以上是内存溢出为你收集整理的silverlight – XAML:当子对象的ScaleTransform变大时,让ScrollViewer显示滚动条全部内容,希望文章能够帮你解决silverlight – XAML:当子对象的ScaleTransform变大时,让ScrollViewer显示滚动条所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1001015.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存