我有一个Microsoft.Phone.Controls.Maps.Map地图控件(Windows 7中较旧的Bing地图,因为新的不适合我需要)。
我以编程方式将带有Line的Canvas控件添加到地图中。
时一切正常<Line ... Stroke="{StaticResource PhoneForegroundBrush}" />
但如果我将笔划更改为PhoneAccentColor,则会发生未处理的异常
<Line ... Stroke="{StaticResource PhoneAccentColor}" />
这里是来自未处理异常的堆栈跟踪:
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.UIElement_Measure(UIElement element, Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at Microsoft.Phone.Controls.Maps.MapLayer.MeasureOverride(Size availableSize)
at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
任何想法可能是什么问题?
如果相关,我的代码:
<UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:Key="MyTemplate">
<Canvas Height="300" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center">
<Line X1="150" X2="150" Y1="0" Y2="130" Stroke="{StaticResource PhoneAccentColor}" Margin="0"/>
</Canvas>
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>
和C#使用它:
ContentControl content = new ContentControl();
content.ContentTemplate = (DataTemplate)Resources["MyTemplate"];
Viewbox viewbox = new Viewbox();
viewbox.Width = 300;
viewbox.Height = 300;
viewbox.Child = content;
Map.Children.Add(viewbox);
答案 0 :(得分:2)
您应该使用 PhoneAccentBrush 而不是PhoneAccentColor。因为PhoneAccentColor是typeof Color。但是笔划需要的类型是Brush。
<Line ... Stroke="{StaticResource PhoneAccentBrush}" />
或将Stroke定义为SolidColorBrush并使用PhoneAccentColor设置颜色:
<Line>
<Line.Stroke>
<SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
</Line.Stroke>
</Line>