gpt4 book ai didi

c# - 滚动查看器未在 silverlight 中更新

转载 作者:行者123 更新时间:2023-11-30 16:33:34 26 4
gpt4 key购买 nike

我在滚动查看器中有一个图像,我有一个缩放图像的控件,在缩放事件中我改变了图像的比例,如下所示:

void zoomSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
scale.ScaleX = e.NewValue;
scale.ScaleY = e.NewValue;
//scroll is a name of scrolviewer
scroll.UpdateLayout();
}

下面还有一个xaml

<Grid x:Name="Preview" Grid.Column="1">
<Border x:Name="OuterBorder" BorderThickness="1" BorderBrush="#A3A3A3" >
<Border x:Name="InnerBorder" BorderBrush="Transparent" Margin="2" >
<Grid Background="White" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ScrollViewer x:Name="scroll" HorizontalScrollBarVisibility="Auto" Grid.Column="0" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Themes:ThemeManager.StyleKey="TreeScrollViewer">
<Image Source="../charge_chargeline.PNG" >
<Image.RenderTransform>
<CompositeTransform x:Name="**scale**" />
</Image.RenderTransform>
</Image>
</ScrollViewer>
<Border HorizontalAlignment="Center" CornerRadius="0,0,2,2" Width="250" Height="24" VerticalAlignment="Top">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#CDD1D4" Offset="0.0"/>
<GradientStop Color="#C8CACD" Offset="1.0"/>
</LinearGradientBrush>
</Border.Background>
<ChargeEntry:Zoom x:Name="zoominout" />
</Border>
</Grid>
</Border>
</Border>


</Grid>

最佳答案

这里的问题是渲染转换发生在渲染过程的后期。晚于测量和排列阶段。滚动查看器根本不知道由缩放转换引起的任何明显的大小变化,它仍然认为包含的元素的大小由 Actual 属性指定。

一种解决方案可能是使用 Silverlight Toolkit 中的 LayoutTransform 对象。这将应用转换作为其布局的一部分,因此其 Actual 属性将反射(reflect)缩放后的大小。在 ScrollViewer 中使用它,滚动条应该按预期运行。

关于c# - 滚动查看器未在 silverlight 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3028265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com