2013-08-16 2 views
0

Как изменить содержание кнопки инструментария через программу динамически?Сменить Windows Phone Toolkit Pushpin content

Я поместил несколько штампов на карты инициализации, и я хочу изменить содержимое кнопки, когда пользователь нажимает на нее.

Это мой XAML код:

<toolkit:MapExtensions.Children> 
    <toolkit:MapItemsControl x:Name="MapItems"> 
     <toolkit:MapItemsControl.ItemTemplate> 
      <DataTemplate> 
       <toolkit:Pushpin GeoCoordinate="{Binding Coordinate}" Tap="PinOnTap"> 
        <toolkit:Pushpin.Template> 
         <ControlTemplate TargetType="toolkit:Pushpin"> 
          <StackPanel> 
           <ContentPresenter x:Name="content" HorizontalAlignment="Center" Content="{TemplateBinding Content}" /> 
           <Path Data="M0,0 L0,1 L1,0" Fill="{TemplateBinding Background}" Stretch="Fill" Margin="32,0" Height="12" Width="18" 
            Visibility="{Binding Content.Visibility, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" 
            HorizontalAlignment="Left" /> 
           <Image Source="{Binding Icon_img}" Stretch="None" HorizontalAlignment="Left"/> 
          </StackPanel> 
         </ControlTemplate> 
        </toolkit:Pushpin.Template> 
        <Border Background="White" Visibility="Collapsed" Width="200" HorizontalAlignment="Center" > 
         <StackPanel Orientation="Horizontal" Tap="gotoProfileFromPin"> 
          <Image Margin="8" Source="{Binding Image}" VerticalAlignment="Top" Width="50" Height="50" /> 
          <StackPanel> 
           <TextBlock Text="{Binding Uid}" Visibility="Collapsed"/> 
          </StackPanel> 
         </StackPanel> 
        </Border> 
       </toolkit:Pushpin> 
      </DataTemplate> 
     </toolkit:MapItemsControl.ItemTemplate> 
    </toolkit:MapItemsControl> 
</toolkit:MapExtensions.Children> 

И мой Program.cs:

private void PinOnTap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    var popOut = ((sender as Pushpin).Content) as Border; 
    popOut.Visibility = System.Windows.Visibility.Visible; 

    var popOutImg = (popOutNew.Child as StackPanel).DataContext; 

    var popUser = popOutImg as UserPin; 

    // function to get the images by Uid 

    popUser.Image = new Uri(images fetch from function, UriKind.RelativeOrAbsolute); 

    popOutNew.Child.UpdateLayout(); 

    e.Handled = true; 
} 

В функции PinOnTap, я принесу картинку из другой функции и показать его на карте в виде toolkit: Pushpin.Content, однако он не может работать.

Этот код:

popUser.Image = new Uri(images fetch from function, UriKind.RelativeOrAbsolute); 

это изменить только источник изображения, но не обновляет интерфейс. Я печатаю его значение, и его источник был изменен, но я не знаю, почему он не появился на карте (на карте отображается только «Граница» с белым фоном и внутри не было изображения)

ответ

0

Я думаю, вам придется реализовать INotifyPropertyChange, поскольку изменение не отражается на Xaml.

Смежные вопросы