我有一个Microsoft.Phone.Controls.Maps.Map地图控件(Windows 7中的旧Bing地图作为新的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);
最佳答案
您应该使用PhoneAccentBrush而不是PhoneAccentColor。因为PhoneAccentColor是typeof Color。但是描边需要的类型是画笔。
<Line ... Stroke="{StaticResource PhoneAccentBrush}" />
或将Stroke定义为SolidColorBrush并使用PhoneAccentColor设置颜色:
<Line>
<Line.Stroke>
<SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
</Line.Stroke>
</Line>