XAML中的绑定图钉背景ControlTemplate不起作用

时间:2013-06-14 02:10:54

标签: xaml binding windows-phone-8 bing-maps

我的Windows Phone应用程序中使用了主要颜色,但我似乎无法将其绑定到XAML中的Pushpin.Background。相反,我不得不在UserControl的C#代码中创建Pushpin。

奇怪的是,我有另一个完全自定义的Pushpin ControlTemplate,它允许我绑定到主色。

PrimaryColor的类型为System.Windows.Media.Color

任何想法是什么问题?

在下面的代码中,我可以将Ellipse.Fill绑定到UserLocationPushpinControlTemplate中的PrimaryColor,但是我无法在UserWaypointPushpinControlTemplate中绑定m:Pushpin.Background。

<UserControl x:Class="MyMap"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:m="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="480" d:DesignWidth="480"
    DataContext="{Binding Main, Source={StaticResource Locator}}">

    <UserControl.Resources>
        <ResourceDictionary>

            <ControlTemplate x:Key="UserLocationPushpinControlTemplate" TargetType="m:Pushpin">
                <Grid x:Name="ContentGrid" Width="34" Height="34">
                    <StackPanel Orientation="Vertical">
                        <Grid MinHeight="30" MinWidth="30">
                            <Ellipse Margin="1"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                Width="30"
                                Height="30"
                                Stroke="White"
                                StrokeThickness="3">
                                <Ellipse.Fill>
                                    <SolidColorBrush Color="{Binding PrimaryColor, Mode=OneWay}" />
                                </Ellipse.Fill>
                            </Ellipse>
                        </Grid>
                    </StackPanel>
                </Grid>
            </ControlTemplate>

            <ControlTemplate x:Key="UserWaypointPushpinControlTemplate" TargetType="m:Pushpin">
                <m:Pushpin Foreground="White">
                    <m:Pushpin.Background>
                        <SolidColorBrush Color="{Binding PrimaryColor, Mode=OneWay}" />
                    </m:Pushpin.Background>
                </m:Pushpin>
            </ControlTemplate>

        </ResourceDictionary>
    </UserControl.Resources>

1 个答案:

答案 0 :(得分:0)

虽然我从来没有深究这个问题,但我重构了一些代码,用以下条目添加样式XAML文件:

<SolidColorBrush x:Key="PrimaryColorBrush" Color="#FF86A406" />

对于我的场景,这是一个更好的解决方案,但不幸的是,我不再让我的代码处于某个状态,以测试任何人可能提出的任何建议。遗憾。