Я привязываю данные некоторых кнопок к MapLayer. Они отображаются нормально, но когда я использую команду relay для передачи событийных сигналов от левой кнопки мыши Up, объекты-источники являются elipse. Я использовал этот метод на MapPolygon и получил нужную информацию от объекта.
Может быть, я плохо к этому отношусь, поскольку я новичок в mvvm, поэтому, пожалуйста, дайте мне знать!
Это работает для моих MapPolygons (vm ссылается на пространство имен моего расширенного класса MapPolygon)
<DataTemplate x:Name="polyTemplate">
<vm:extendedMapPolygon cName="{Binding _cName}" Locations="{Binding _Locations}" />
</DataTemplate>
Вот XAML в MapLayer
<m:MapItemsControl ItemTemplate="{StaticResource polyTemplate}" ItemsSource="{Binding Path=_PolyforDisplay, Mode=TwoWay}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<cmd:EventToCommand Command="{Binding Path=PolySelCommand}" PassEventArgsToCommand="True" ></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
</m:MapItemsControl>
На мой взгляд конструктор модели
PolySelCommand = new RelayCommand<MouseButtonEventArgs>(PolySelCommandExecute);
и, наконец, фактическая команда
public RelayCommand<MouseButtonEventArgs> PolySelCommand { get; set; }
private void PolySelCommandExecute(MouseButtonEventArgs cmp)
{
Polygon poly = cmp.OriginalSource as Polygon;
extendedMapPolygon ePoly = poly.Parent as extendedMapPolygon;
_MapPolygonSelected = ePoly.cName;
}
(Я поместил это здесь, чтобы показать и метод, которым я сейчас пользуюсь, и в надежде, что он может быть полезным для других!)
Однако, когда я пытаюсь сделать то же самое с помощью канцелярской кнопки, cmp.OriginalSource представляет собой эллипс, и я не могу передать что-либо еще.
Мой код канцелярской кнопки (в этом коде я просто использую канцелярские кнопки в MapControl)
<DataTemplate x:Name="ppTemplate">
<m:Pushpin ToolTipService.ToolTip="{Binding _psName}" Location="{Binding _Location}" />
</DataTemplate>
<m:MapItemsControl ItemTemplate="{StaticResource ppTemplate}" ItemsSource="{Binding Path=_PinsforDisplay, Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<cmd:EventToCommand Command="{Binding Path=pinSelCommand}" PassEventArgsToCommand="True" ></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
</m:MapItemsControl>
Должен ли я использовать параметр команды? Или какой-то другой способ передачи текста в мою модель просмотра, когда я нажимаю на канцелярскую кнопку, чего я и хочу на самом деле.