【问题标题】:Implementing DataTemplateSelector - want to pass parent's property somehow实现 DataTemplateSelector - 想以某种方式传递父属性
【发布时间】:2012-01-25 13:02:32
【问题描述】:

我正在尝试实现 DataTemplateSelector,就像在这里完成的那样:http://www.codeproject.com/KB/silverlight/SLTemplateSelector.aspx

此 XAML 工作正常。然而,这不是我想要的。我想根据ZoomLevel选择模板

所以,我需要以某种方式将 ZoomLevel 传递给我的班级 Mobile:DevicePushpinTemplateSelector。可能吗?我试图设置Content="{Binding ZoomLevel, ElementName=MainMap}",它确实将 ZoomLevel 作为参数传递给我的选择器。但是里面的所有模板(DotTemplate、NumberedTemplate、DetailedTemplate)都是NULL。而且,我不确定在这种情况下如何绑定模板内部。

<m:Map x:Name="MainMap"
            ZoomLevel="{Binding MapZoomLevel, Mode=TwoWay}">
            <m:MapItemsControl 
                ItemsSource="{Binding Source={StaticResource WorkLayerData}}">
                <m:MapItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Mobile:DevicePushpinTemplateSelector Content="{Binding}">
                            <Mobile:DevicePushpinTemplateSelector.DotTemplate>
                                <DataTemplate>                                    
                                    <Ellipse m:MapLayer.Position="{Binding Location}"
                                        Width="10" Height="10" Stroke="Black" Fill="Red" StrokeThickness="2" /> 
                                </DataTemplate>
                            </Mobile:DevicePushpinTemplateSelector.DotTemplate>
                            <Mobile:DevicePushpinTemplateSelector.NumberedTemplate>
                                <DataTemplate>
                                    <Ellipse m:MapLayer.Position="{Binding Location}"
                                            Width="10" Height="10" Stroke="Black" Fill="Red" StrokeThickness="2" />
                                </DataTemplate>
                            </Mobile:DevicePushpinTemplateSelector.NumberedTemplate>
                            <Mobile:DevicePushpinTemplateSelector.DetailedTemplate>
                                <DataTemplate>
                                    <Ellipse m:MapLayer.Position="{Binding Location}"
                                            Width="10" Height="10" Stroke="Black" Fill="Red" StrokeThickness="2" />
                                </DataTemplate>
                            </Mobile:DevicePushpinTemplateSelector.DetailedTemplate>
                        </Mobile:DevicePushpinTemplateSelector>
                    </DataTemplate>




                </m:MapItemsControl.ItemTemplate>
            </m:MapItemsControl>
        </m:Map>

【问题讨论】:

  • 对我来说同样的情况 - 很想知道任何人对如何解决这个问题的意见

标签: c# silverlight xaml binding datatemplate


【解决方案1】:

您不能只在 DevicePushPinDataSelector 上创建另一个属性,然后通过绑定填充它吗?

<Mobile:DevicePushpinTemplateSelector Content="{Binding}" ZoomLevel="{Binding ZoomLevel, ElementName=MainMap}">

绑定到 DataTemplate 中的数据应该与正常情况相同,它们将继承其 DataContext,因此应为 ItemsControl 中指定的 WorkLayerData

【讨论】:

    猜你喜欢
    • 2022-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多