Silverlight 4.0 SL4 TransformToVisualic:“;值不在预期范围内。”;
我有一个包含画布的ScrollViewer:Silverlight 4.0 SL4 TransformToVisualic:“;值不在预期范围内。”;,silverlight-4.0,transform,Silverlight 4.0,Transform,我有一个包含画布的ScrollViewer: <ScrollViewer x:Name="scrollViewer" Margin="0" Grid.RowSpan="2" > <i:Interaction.Triggers> <!-- stuff--> </i:Interaction.Triggers> <Border> <Canvas x:Name="MapCanvas" Background="{Binding
<ScrollViewer x:Name="scrollViewer" Margin="0" Grid.RowSpan="2" >
<i:Interaction.Triggers>
<!-- stuff-->
</i:Interaction.Triggers>
<Border>
<Canvas x:Name="MapCanvas" Background="{Binding BackgroundColor}" Width="7200" Height="3200" >
<Canvas.RenderTransform>
<ScaleTransform />
</Canvas.RenderTransform>
<i:Interaction.Behaviors>
<!-- stuff-->
</i:Interaction.Behaviors>
<i:Interaction.Triggers>
<!-- stuff-->
</i:Interaction.Triggers>
</Canvas>
</Border>
如果您能提供任何有关导致这种情况的提示,我们将不胜感激。在联机帮助中,我找不到TransformToVisual可能引发哪些异常或为什么会引发这些异常的文档
更新:是否有办法测试scrollViewer和/或MapCanvas以确保TransformToVisual调用成功?也许我完全错了,但我怀疑这可能是一个时间问题 如果我这样做
private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 0, 20);
timer.Tick += (s, e2) =>
{
var generalTransform = scrollViewer.TransformToVisual(MapCanvas);
timer.Stop();
};
timer.Start();
}
错误不再发生
我猜这是因为控件没有在屏幕上“可视化”显示?您只能在屏幕上可见并已布局好的元素上调用TransformToVisual,谢谢您的回复。在调用TransformToVisual之前,是否有任何方法可以测试元素是否已布局?您可以添加一个标志,该标志在scrollViewer的onload事件中设置为true,在unload事件中设置为false。然后在调用TransformToVisual之前测试该标志是否为true
private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 0, 20);
timer.Tick += (s, e2) =>
{
var generalTransform = scrollViewer.TransformToVisual(MapCanvas);
timer.Stop();
};
timer.Start();
}