WPF调用动态控件,出现错误:System.NullReferenceException”

.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;
        }

这样写动态引用控件,哪里出问题了,怎么改???

开满天机
浏览 555回答 3
3回答

红糖糍粑

之前我也遇到过类似的问题,在WPF的书籍中有介绍说在Template中的名称只是在Template内有效,在外面无效,但是可以通过FindName来找到对应的元素,但是遇到和你相同的问题。于是就采用了另外一种方法,通过VisualTreeHelper来做可以实现的。

慕无忌1623718

因为在你调用的时候还没有加载

阿波罗的战车

恩,是的,但是怎么加载???谢谢
打开App,查看更多内容
随时随地看视频慕课网APP