StaticResourceExtension作为Visual Studio 2015中的属性元素

时间:2016-07-05 15:45:45

标签: xaml xamarin visual-studio-2015 xamarin.forms

我有下一个XAML:

<ContentPage ...>
  <ContentPage.Resources>
    <ResourceDictionary>
      <Style x:Key="visualStyle" TargetType="VisualElement">
        <Setter Property="BackgroundColor" Value="Red" />
      </Style>
      <Style x:Key="baseStyle" TargetType="View" BasedOn="{StaticResource visualStyle}">
       ...
      </Style>
      <Style x:Key="labelStyle" TargetType="Label" BasedOn="{StaticResource baseStyle}">
        <Setter Property="TextColor" Value="Black" />
      </Style>      
    </ResourceDictionary>
  </ContentPage.Resources>

  <ContentPage.Style>
    <StaticResourceExtension Key="visualStyle" />
  </ContentPage.Style>
 ...  
</ContentPage>

当我尝试使用visualStyle StaticResourceExtension为整个ContentPage设置Style时,我在Visual Studio中获得下一个annoing弹出窗口:

enter image description here

为什么会发生这种情况以及如何将其删除? XAML是正确的,并在运行时成功解析。

2 个答案:

答案 0 :(得分:0)

这是一种非常不寻常的语法。标记扩展几乎总是使用胡子括号语法进行实例化,因此Intellisense感到困惑并不让我感到惊讶。

我知道你为什么要这样做 - 你想引用在引用元素的Resources中定义的资源。但是XAML希望能够在遇到引用之前解析该资源。

有几个选择......

  1. 您可以将mydata资源移动到App.xaml,并使用普通属性和胡子括号语法从您的页面引用它。
  2. 您可以通过legend引用它,这应该可以让它正确解析。但这似乎有点笨拙。
  3. 但是,我首选的解决方案是第一个,因为这可能是应用程序范围的主题风格。

答案 1 :(得分:0)

我看到了你的代码的这一部分,并且想知道(因为我也开始学习Xamarin)不能使用StaticResourceExtension键属性,必须使用后缀x:?

<ContentPage.Style>
    <StaticResourceExtension x:Key="visualStyle" />
    <!-- INSTEAD OF <StaticResourceExtension Key="visualStyle" />-->

 </ContentPage.Style>

我刚刚遇到这个异常并发现问题是我使用了错误的属性,所以也许这个例外是Xamarin的方式告诉我们我们搞砸了什么,没有明确说明什么。