0

プログラムを介して動的にツールキット プッシュピンの内容を変更する方法は?

初期化時にマップにいくつかの画鋲を配置しました。ユーザーがタップしたときに画鋲の内容を変更したいと考えています。

これは私の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);

画像ソースを変更するだけで、UI を更新しません。値を印刷し、ソースが変更されましたが、マップに表示されなかった理由はわかりません(マップには白い背景の「境界線」のみが表示され、その中に画像はありませんでした)

4

1 に答える 1

0

変更が Xaml に反映されないため、 INotifyPropertyChange を実装する必要があると思います。

于 2013-08-16T10:34:39.523 に答える