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);

PhoneAccentColor的XAML行描导致未处理的异常

你应该使用PhoneAccentBrush而不是PhoneAccentColor。因为PhoneAccentColor是typeofcolor。但是描边需要的类型是画笔

<Line ... Stroke="{StaticResource PhoneAccentBrush}" />

或将描边定义为SolidColorBrush,并使用PhoneAccentColor设置颜色:

<Line>
    <Line.Stroke>
        <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
    </Line.Stroke>
</Line>