我有下一个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弹出窗口:
为什么会发生这种情况以及如何将其删除? XAML是正确的,并在运行时成功解析。
答案 0 :(得分:0)
这是一种非常不寻常的语法。标记扩展几乎总是使用胡子括号语法进行实例化,因此Intellisense感到困惑并不让我感到惊讶。
我知道你为什么要这样做 - 你想引用在引用元素的Resources中定义的资源。但是XAML希望能够在遇到引用之前解析该资源。
有几个选择......
mydata
资源移动到App.xaml,并使用普通属性和胡子括号语法从您的页面引用它。legend
引用它,这应该可以让它正确解析。但这似乎有点笨拙。但是,我首选的解决方案是第一个,因为这可能是应用程序范围的主题风格。
答案 1 :(得分:0)
我看到了你的代码的这一部分,并且想知道(因为我也开始学习Xamarin)不能使用StaticResourceExtension键属性,必须使用后缀x:?
<ContentPage.Style>
<StaticResourceExtension x:Key="visualStyle" />
<!-- INSTEAD OF <StaticResourceExtension Key="visualStyle" />-->
</ContentPage.Style>
我刚刚遇到这个异常并发现问题是我使用了错误的属性,所以也许这个例外是Xamarin的方式告诉我们我们搞砸了什么,没有明确说明什么。