gpt4 book ai didi

c# - Xamarin.Forms App.xaml MergedDictionaries - 静态资源查找未检测样式

转载 作者:行者123 更新时间:2023-12-03 22:40:18 31 4
gpt4 key购买 nike

我正在创建一个稍后将转到 Play 商店的应用程序。该应用程序组织良好且整洁 - 并利用了 MVVM 模式。
在我的应用程序中 - 我有一个名为“样式”的文件夹,其中包含应用程序不同元素的多种样式:
enter image description here
如您所见,我有一个用于 float 操作按钮的 ResourceDictionary:

<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:FAB="clr-namespace:Refractored.FabControl;assembly=Refractored.FabControl"
xmlns:rsvpapp="clr-namespace:RSVPApp"
x:Class="RSVPApp.Styles.FloatingActionButton">

<Color x:Key="FAB_BlueNormalStyleColor">
#0BA1D8
</Color>

<Color x:Key="FAB_BlueRippleStyleColor">
#21B7ED
</Color>

<Color x:Key="FAB_BluePressedStyleColor">
#3DCBFF
</Color>


<Color x:Key="FAB_RedNormalStyleColor">
#CF0000
</Color>

<Color x:Key="FAB_RedRippleStyleColor">
#ED2121
</Color>

<Color x:Key="FAB_RedPressedStyleColor">
#FF3D3D
</Color>


<Color x:Key="FAB_OrangeNormalStyleColor">
#FFA500
</Color>

<Color x:Key="FAB_OrangeRippleStyleColor">
#EDA621
</Color>

<Color x:Key="FAB_OrangePressedStyleColor">
#FFBB3D
</Color>


<Color x:Key="FAB_GreenNormalStyleColor">
#00E500
</Color>

<Color x:Key="FAB_GreenRippleStyleColor">
#69FA69
</Color>

<Color x:Key="FAB_GreenPressedStyleColor">
#85FF85
</Color>

<!--Blue-->
<Style x:Key="FAB_BlueRegularStyle"
TargetType="FAB:FloatingActionButtonView">
<Setter Property="ImageName"
Value="ic_add_white.png" />

<Setter Property="ColorNormal"
Value="{StaticResource FAB_BlueNormalStyleColor}" />

<Setter Property="ColorRipple"
Value="{StaticResource FAB_BlueRippleStyleColor}" />

<Setter Property="ColorPressed"
Value="{StaticResource FAB_BluePressedStyleColor}" />

<Setter Property="HasShadow"
Value="True" />

<Setter Property="IsVisible"
Value="True" />
</Style>

<Style x:Key="FAB_BlueMiniStyle"
TargetType="FAB:FloatingActionButtonView"
BasedOn="{StaticResource FAB_BlueRegularStyle}">
<Setter Property="Size"
Value="Mini" />
</Style>


<!--Red-->
<Style x:Key="FAB_RedRegularStyle"
TargetType="FAB:FloatingActionButtonView"
BasedOn="{StaticResource FAB_BlueRegularStyle}">
<Setter Property="ColorNormal"
Value="{StaticResource FAB_RedNormalStyleColor}" />

<Setter Property="ColorRipple"
Value="{StaticResource FAB_RedRippleStyleColor}" />

<Setter Property="ColorPressed"
Value="{StaticResource FAB_RedPressedStyleColor}" />
</Style>

<Style x:Key="FAB_RedMiniStyle"
TargetType="FAB:FloatingActionButtonView"
BasedOn="{StaticResource FAB_RedRegularStyle}">
<Setter Property="Size"
Value="Mini" />
</Style>


<!--Orange-->
<Style x:Key="FAB_OrangeRegularStyle"
TargetType="FAB:FloatingActionButtonView"
BasedOn="{StaticResource FAB_BlueRegularStyle}">
<Setter Property="ColorNormal"
Value="{StaticResource FAB_OrangeNormalStyleColor}" />

<Setter Property="ColorRipple"
Value="{StaticResource FAB_OrangeRippleStyleColor}" />

<Setter Property="ColorPressed"
Value="{StaticResource FAB_OrangePressedStyleColor}" />
</Style>

<Style x:Key="FAB_OrangeMiniStyle"
TargetType="FAB:FloatingActionButtonView"
BasedOn="{StaticResource FAB_OrangeRegularStyle}">
<Setter Property="Size"
Value="Mini" />
</Style>


<!--Green-->
<Style x:Key="FAB_GreenRegularStyle"
TargetType="FAB:FloatingActionButtonView"
BasedOn="{StaticResource FAB_BlueRegularStyle}">
<Setter Property="ColorNormal"
Value="{StaticResource FAB_GreenNormalStyleColor}" />

<Setter Property="ColorRipple"
Value="{StaticResource FAB_GreenRippleStyleColor}" />

<Setter Property="ColorPressed"
Value="{StaticResource FAB_GreenPressedStyleColor}" />
</Style>

<Style x:Key="FAB_GreenMiniStyle"
TargetType="FAB:FloatingActionButtonView"
BasedOn="{StaticResource FAB_GreenRegularStyle}">
<Setter Property="Size"
Value="Mini" />
</Style>
</ResourceDictionary>
现在 - 我想将我所有的资源字典合并到我的 app.xaml 中:
<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:styles="clr-namespace:RSVPApp.Styles"
x:Class="RSVPApp.App">
<!--
Define global resources and styles here, that apply to all pages in your app.
-->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<styles:FloatingActionButton />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<Color x:Key="Primary">#2196F3</Color>
<Style TargetType="Button">
<Setter Property="TextColor" Value="White"></Setter>
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="{StaticResource Primary}" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="#332196F3" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>

正如你所看到的 - 在顶部我已经声明了一个合并的字典属性,在里面我有适当的资源字典。
在我的其中一个页面中 - 我决定要测试是否检测到样式:
    <fab:FloatingActionButtonView Style="{StaticResource FAB_BlueRegularStyle}"/>
每当我构建应用程序时,它都会立即崩溃,因为它无法检测到样式。
也许我做错了什么?我不完全确定。我正在寻找解决方案。
谢谢,

最佳答案

我创建了一个测试 project并试图解决您的问题。我找不到严重的问题。我还评论了您指定图像源的行。这是我的结果,我发现了你的问题;
想法
起初,而不是

<Style x:Key="FAB_BlueRegularStyle"
TargetType="FAB:FloatingActionButtonView">
...
</Style>
用这个;
<Style x:Key="FAB_BlueRegularStyle"
TargetType="{x:Type FAB:FloatingActionButtonView}">
...
</Style>
你从中获利。
测试结果
这是我从模拟器和编译器得到的结果。
result
潜在的错误
也许您在 .csproj 中声明了错误文件,因为在下图中我看不到箭头来查看 xaml.cs 文件。在 Styles_FloatingActionButton.xaml您指向的文件 FloatingActionButton类声明。你真的有这个文件吗?
this
也许重新创建您的资源字典并检查您的文件属性。它应该是这样的。
style

关于c# - Xamarin.Forms App.xaml MergedDictionaries - 静态资源查找未检测样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65269506/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com