.xaml文件代码:
<window>
<window.resources>
<DataTemplate x:Key="backTemplate">
<Border BorderBrush="#55FFFFFF" Background="AliceBlue" BorderThickness="1" CornerRadius="5">
<GroupBox Name="mapgroup" Header="WPFMAP" Margin="12,27,241,12" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
<Grid>
<my:GMapControl Name="MainMap"/>
</Grid>
</GroupBox>
</Border>
</DataTemplate>
</window.resources>
<Border Name="border">
<略写>
</Border>
</window>
.cs文件代码: private void Convertmap_Click(object sender, RoutedEventArgs e)
{
((GMapControl)border.FindName("MainMap")).Manager.Mode = AccessMode.ServerAndCache;
((GMapControl)border.FindName("MainMap")).DragButton = MouseButton.Left;//鼠标左击拖动地图
((GMapControl)border.FindName("MainMap")).MapProvider = GMapProviders.BingMap;
((GMapControl)border.FindName("MainMap")).Position = new PointLatLng(32.5149000, 118.78361500);
((GMapControl)border.FindName("MainMap")).MaxZoom = 24;
((GMapControl)border.FindName("MainMap")).MinZoom = 1;
((GMapControl)border.FindName("MainMap")).Zoom = 4;
}
这样写动态引用控件,哪里出问题了,怎么改???
之前我也遇到过类似的问题,在WPF的书籍中有介绍说在Template中的名称只是在Template内有效,在外面无效,但是可以通过FindName来找到对应的元素,但是遇到和你相同的问题。于是就采用了另外一种方法,通过VisualTreeHelper来做可以实现的。
谢谢你的指点,按照你的建议,我想得到gmapcotrol的name为MainMap控件,使用visualtreehelper的语句是哪句?本人刚刚学习wpf,请你多多指点,再次谢谢!
@永乐上铺:
private void Button_Click(object sender, RoutedEventArgs e) { var s = sender as Button; for (int i = 0; i < VisualTreeHelper.GetChildrenCount(s); i++) { Debug.WriteLine(VisualTreeHelper.GetChild(s, i).ToString()); if(VisualTreeHelper.GetChild(s, i) != DependencyProperty.UnsetValue) { for (int j = 0; j < VisualTreeHelper.GetChildrenCount(VisualTreeHelper.GetChild(s, i)); j++) { Debug.WriteLine(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(s, i), j).ToString()); } } } }
因为在你调用的时候还没有加载
恩,是的,但是怎么加载???谢谢