我的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>
答案 0 :(得分:0)
虽然我从来没有深究这个问题,但我重构了一些代码,用以下条目添加样式XAML文件:
<SolidColorBrush x:Key="PrimaryColorBrush" Color="#FF86A406" />
对于我的场景,这是一个更好的解决方案,但不幸的是,我不再让我的代码处于某个状态,以测试任何人可能提出的任何建议。遗憾。