Переключить шаблон на основе родительского свойства. Возможный? - PullRequest
0 голосов
/ 21 декабря 2011

Вот мой сценарий. Работа с контролем Bing Map (MVVM):

<m:Map x:Name="MainMap"
            ZoomLevel="{Binding MapZoomLevel, Mode=TwoWay}"
            Center="{Binding MapCenter, Mode=TwoWay}"
            LogoVisibility="Collapsed"
            CopyrightVisibility="Collapsed"
            CredentialsProvider="{Binding BingApiKey}"
            UseInertia="True" 
            Mode="Road" Grid.Column="2" Grid.RowSpan="5">
            <m:MapItemsControl 
                ItemsSource="{Binding Source={StaticResource WorkLayerData}}">
                <m:MapItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Border m:MapLayer.Position="{Binding Location}"
                                Background="LightPink"  BorderBrush="Black">
                            <TextBlock Text="{Binding DisplayId}" />    
                        </Border>
                    </DataTemplate>
                </m:MapItemsControl.ItemTemplate>
            </m:MapItemsControl>
        </m:Map>

Внизу вы видите, как я связываю свои "пользовательские" кнопки, просто объявив DataTemplate с помощью Border и TextBlock.

Я хочу объявить 3 шаблона для одного и того же элемента и выбрать их на основе ZoomLevel свойства MainMap

Например, когда ZoomLevel <= 3, я буду отображать маленькие точки, когда это между 3 и 8, я буду отображать более необычные кнопки с идентификатором, а когда это 8+, я могу отображать еще больше информации. </p>

Это простая идея, но я хотел бы знать, если это возможно ..

1 Ответ

0 голосов
/ 21 декабря 2011

Взгляните на DataTemplateSelector решение для Silverlight.

...