PhoneAccentColor的XAML Line Stroke导致未处理的异常

时间:2014-06-13 05:10:49

标签: c# wpf xaml windows-phone-8

我有一个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);

1 个答案:

答案 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>