WP7 - 地图 - 在运行时编辑图钉模板的属性

时间:2012-10-10 15:50:06

标签: windows-phone-7 datatemplate bing-maps silverlight-toolkit pushpin

我正在开发WP7应用程序的映射功能。目前,图钉显示为圆形图形。

我正在尝试创建功能,以允许用户通过滑动条来更改图钉圆的大小。这个想法是用户可以在两种尺寸之间的任何地方改变图钉的大小。

因此我不想在XAML中创建2个或3个预定义的图钉模板,只需在它们之间交换 - 我希望能够修改模板的属性(特别是椭圆的高度和宽度)用户滑动条形图或按住页面或其他任何内容时实时显示。

然而,我一直在努力做到这一点。

是否可以编辑现有模板的属性?我已经考虑过实时创建模板,但这似乎也不是解决方案。

根据客户的不同,页面上显示的图钉数量可能会有很大差异。此外,我们的客户是户外类型,许多客户都在使用较小的图标,而其他人则没有。因此我渴望这种功能。

请在下面找到XAML,我只想在运行时改变椭圆的大小。提前感谢您的帮助。

      <ControlTemplate x:Key="PushpinControlTemplate1" TargetType="my:Pushpin">
        <Grid x:Name="ContentGrid" Width="50" Height="50" >
            <StackPanel Orientation="Vertical" >
                <Grid MinHeight="31" MinWidth="29" Margin="0">
                    <Ellipse Fill="#FFFF7F00"
                   Margin="1"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"
                   Width="50"
                   Height="50"
                   Stroke="White"
                   StrokeThickness="3"/>
                    <ContentPresenter HorizontalAlignment="Center"
                                       Content="{TemplateBinding Content}"
                                       ContentTemplate="{TemplateBinding ContentTemplate}"
                                       Margin="4"/>
                </Grid>
            </StackPanel>
        </Grid>
    </ControlTemplate>

2 个答案:

答案 0 :(得分:1)

将Height属性绑定到ViewModel属性。

   <Ellipse 
           Width="50"
           Height="{Binding ItemHeight}"/>

当用户滑动栏时更改属性。

答案 1 :(得分:1)

private DataTemplate CreateDataTemplate()
{
    string xaml =
        @"<DataTemplate
        xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
        xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
        <Grid>
            <Rectangle Fill=""LightGreen"" Height=""50"" Width=""250"" />
            <TextBlock Text='{Binding}' FontSize='40' />
            </Grid>       
        </DataTemplate>";
    DataTemplate dt = (DataTemplate)XamlReader.Load(xaml);
    return dt;
}

你可以参考上面的代码......

Click

............................................... ..................

绑定你的财产