我有一个包含Canvas的ScrollViewer:
<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>
此代码导致异常,“值不在预期范围内”.
var generalTransform = scrollViewer.TransformToVisual(MapCanvas);
关于导致这种情况的任何提示都将受到赞赏.查看在线帮助,我找不到TransformToVisual可能抛出的异常或原因的文档.
更新:有没有办法测试scrollViewer和/或MapCanvas以确保TransformToVisual调用成功?
解决方法
也许我完全错了,但我怀疑这可能是一个时间问题.
如果我做
private void UserControl_Loaded(object sender,System.Windows.RoutedEventArgs e) { timer = new dispatcherTimer(); timer.Interval = new TimeSpan(0,20); timer.Tick += (s,e2) => { var generalTransform = scrollViewer.TransformToVisual(MapCanvas); timer.Stop(); }; timer.Start(); }
错误不再发生……
我想这是因为屏幕上没有“直观地”显示控件?