Пользовательские кнопки и шаблоны изображений - PullRequest
2 голосов
/ 14 сентября 2011

Возможно, это что-то простое, но сейчас я рву волосы.

Я хочу отобразить кнопки на карте из модели. Итак, я создал шаблон для кнопок

<ControlTemplate x:Key="PushpinTemplate" TargetType="m:Pushpin">
    <Grid x:Name="ContentGrid" Width="32" Height="32" Margin="0">
        <Image Source="Resources/Pushpins/img.png" Stretch="Fill"/>
    </Grid>
</ControlTemplate>

Затем используйте его для связывания коллекции следующим образом:

<m:MapLayer x:Name="myPushpinLayer">
    <m:MapItemsControl x:Name="myPushpins" ItemsSource="{Binding PushpinCollection}">
        <m:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <m:Pushpin Location="{Binding Location}" Template="{StaticResource PushpinTemplate}" />
            </DataTemplate>
        </m:MapItemsControl.ItemTemplate>
     </m:MapItemsControl>
</m:MapLayer>

Но я хочу изменить источник изображения с помощью привязки, но я не уверен, как мне это сделать. Я собирался использовать конвертер для изменения изображения в зависимости от идентификатора в коллекции, если это меняет лучший способ сделать это.

Edit:

Я получил немного дальше:

<m:MapLayer x:Name="myPushpinLayer">
    <m:MapItemsControl x:Name="myPushpins" ItemsSource="{Binding PushpinCollection}">
        <m:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <m:Pushpin Location="{Binding Location}"/>
                    <m:Pushpin.Template>
                        <ControlTemplate>
                            <Grid x:Name="ContentGrid" Width="32" Height="32" Margin="0">
                            <Image Source="{Binding Type,Converter={StaticResource ImageConverter}}" Stretch="Fill"/>
                            </Grid>
                        </ControlTemplate>
                    </m:Pushpin.Template>
                </m:Pushpin>
            </DataTemplate>
        </m:MapItemsControl.ItemTemplate>
     </m:MapItemsControl>
</m:MapLayer>

Если я перенесу шаблон метки в раздел </phone:PhoneApplicationPage.Resources>, произойдет сбой. Я не уверен почему. Наверное, теперь я пытаюсь понять, как все это работает

1 Ответ

2 голосов
/ 14 сентября 2011

Просто добавьте привязку к ControlTemplate

<ControlTemplate x:Key="PushpinTemplate" TargetType="m:Pushpin">
    <Grid x:Name="ContentGrid" Width="32" Height="32" Margin="0">
        <Image Source="{Binding ImageUri}" Stretch="Fill"/>
    </Grid>
</ControlTemplate>

Я бы порекомендовал свойство ImageUri (типа Uri), которое отображает, какое изображение отображать, а не с помощью конвертера.Но конвертер также может работать, привязки выполняются таким же образом.

...