PhoneAccentColor的XAML行描导致未处理的异常
本文关键字:未处理 异常 XAML PhoneAccentColor | 更新日期: 2023-09-27 18:08:21
我有一个Microsoft.Phone.Controls.Maps.Map地图控件(Windows 7中较旧的必应地图不如新地图那样多功能)。
我以编程方式向地图添加一个带有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是typeofcolor。但是描边需要的类型是画笔
<Line ... Stroke="{StaticResource PhoneAccentBrush}" />
或将描边定义为SolidColorBrush,并使用PhoneAccentColor设置颜色:
<Line>
<Line.Stroke>
<SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
</Line.Stroke>
</Line>