MeasureAction как запустить?

0 голосов
спросил 06 Май, 11 от Dido_kz1 (11,020 баллов) в категории Программные продукты Esri
господа всем привет, пишу проект на SL,
решил использовать базовые инструменты  esri:Toolbar, добавляю стандартные Item-ы как Zoom In, Zoom Out  и т.д.

 <esri:Toolbar ToolbarItemClicked="MyToolbar_ToolbarItemClicked"...
<esri:Toolbar.Items>
                    <esri:ToolbarItemCollection>
                       <esri:ToolbarItem Text="Zoom In" >
.....
<esri:ToolbarItem.Content>
</esri:Toolbar>

private void MyToolbar_ToolbarItemClicked(object sender, ESRI.ArcGIS.Client.Toolkit.SelectedToolbarItemArgs e)
        {
            MyDrawObject.IsEnabled = false;
            _toolMode = "";
            switch (e.Item.Text)
            {
                case "Zoom In":
                    MyDrawObject.IsEnabled = true;
                    _toolMode = "zoomin";
                    break;
                case "Zoom Out":
                    MyDrawObject.IsEnabled = true;
                    _toolMode = "zoomout";
                    break;

 теперь хочу добавить туда инструменты как линейка, окно обзора, и т.д.
<esri:ToolbarItem Text="MeasureAction" >
                            <esri:ToolbarItem.Content>
                                <Image Source="/Images/IMG.png" />
                            </esri:ToolbarItem.Content>
                        </esri:ToolbarItem>

Cobe Behine
 MeasureAction mc = new MeasureAction();
        mc.TargetName = "MyMap";
        mc.AreaUnit = AreaUnit.SquareMeters;
        mc.DisplayTotals = true;
        mc.DistanceUnit = DistanceUnit.Meters;
        mc.MapUnits = DistanceUnit.Meters;
        mc.FillSymbol = App.Current.Resources["DefaultrectangleSymbol"] as FillSymbol;

 как далее запустить это код. в инете mc.Execute(); пишется, а тут ругается. что нету такого метода, пробовал как триггер повесить на скрытую кнопку, но там клик юзра нужен потом и т.д.
а Silverlight-овский пример работает без проблем
<Button>
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <esri:MeasureAction                                 
                                    AreaUnit="SquareMeters"
                                    DisplayTotals="True"
                                    DistanceUnit="Meters"
                                    MapUnits="Meters"
                                    MeasureMode="Polyline"                                  
                                    TargetName="MyMap">
                          
                         
                        </esri:MeasureAction>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <Image Source="/Images/IMG.png"  />
            </Button>



3 Ответы

0 голосов
ответил 11 Май, 11 от TDenis (42,620 баллов)
в инете mc.Execute(); пишется

Ссылку можно?

а тут ругается. что нету такого метода

Есть метод Invoke. Но снаружи его не видно, т.к. он protected.
Либо использовать рефлексию, либо сделать так:


public class MyMeasureAction : MeasureAction
{
    public void Execute()
    {
        base.Invoke(null);
    }
}


И работать с MyMeasureAction вместо MeasureAction.

И ещё перед вызовом Execute надо выполнить Attach к какому-нибудь DependencyObject. Например к этому же Toolbar.


З.Ы. Лично я бы вообще не стал использовать Toolbar.
    
0 голосов
ответил 12 Май, 11 от Dido_kz1 (11,020 баллов)

Ссылку можно?


    

http://forums.arcgis.com/threads/3696-Measure-Action-in-Code
Сделал так:
 <esri:ToolbarItem Text="MeasureAction" >
                            <esri:ToolbarItem.Content>
                                <Image Source="/Images/MeasureAction.png" Stretch="UniformToFill" Margin="5" ToolTipService.ToolTip="Линейка">
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="MouseLeftButtonDown">
                                            <esri:MeasureAction AreaUnit="SquareMeters" DisplayTotals="True"
                                            DistanceUnit="Meters" MapUnits="Meters" MeasureMode="Polyline" TargetName="MyMap"/>
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                    </Image>
                           </esri:ToolbarItem.Content>
                        </esri:ToolbarItem>

и т.д. работает )
0 голосов
ответил 13 Май, 11 от TDenis (42,620 баллов)

Забавно, совпало практически один в один.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...