如何从UWP C#中的ContentPresenter DataTemplate获取MapControl?

时间:2016-08-19 10:56:53

标签: c# windows-10-universal uwp-maps

我有一个ContentPresenter,我已为其DataTemplate属性分配了ContentTemplate。现在我想在MapIcon中添加一个MapControl,它是DataTemplate的子项,如下所示:

<DataTemplate x:Key="EWDetailsContentTemplate" x:DataType="viewModels:Task">

        <Grid x:Name="ContentPanel"
                  Background="White"
                  Margin="0,5,0,0">

            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>

            <Maps:MapControl x:Name="LocationMapControl"  
                             MapServiceToken="key"
                             Grid.Row="0"
                             Height="250"/>
         //more controls
       </Grid>

如何使用C#的VisualTree概念获取MapControl?

1 个答案:

答案 0 :(得分:1)

  

如何使用C#的VisualTree概念获取MapControl?

您可以使用VisualTreeHelper使用以下代码获取MapControl

//This function will get all the children Control of one Controls' Container
public List<Control> AllChildren(DependencyObject parent)
{
    var _List = new List<Control>();
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
    {
        var _Child = VisualTreeHelper.GetChild(parent, i);
        if (_Child is Control)
            _List.Add(_Child as Control);
        _List.AddRange(AllChildren(_Child));
    }
    return _List;
}

private MapControl GetMapControl()
{
    var controls = AllChildren(myContentPresenter);//"myContentPresenter" is your ContentPresenter's name.
    var mapControl = (MapControl)controls[0];
    return mapControl;
}