Xaml Xamarin.Forms DynamicSource不';我好像不工作
我似乎无法使Xaml Xamarin.Forms DynamicSource不';我好像不工作,xaml,xamarin.forms,Xaml,Xamarin.forms,我似乎无法使DynamicResource正常工作 下面是App.xml中的XAML: <Application.Resources> <ResourceDictionary> <Thickness x:Key ="DefaultInsets" Bottom="4" Top ="4" Left ="8"
DynamicResource
正常工作
下面是App.xml中的XAML:
<Application.Resources>
<ResourceDictionary>
<Thickness x:Key ="DefaultInsets"
Bottom="4"
Top ="4"
Left ="8"
Right ="8" />
</ResourceDictionary>
</Application.Resources>
这似乎应该为ContentView
中的StackLayout
和StackLayout
中的条目
字段进行一致的插入。但我看不到这些
我做错了什么
更新:我也尝试过使用
静态资源
,但仍然没有成功。我使用资源字典
的以下类型。为了区分,我将上_边距设置为40,这是我的截图
这是我的资源字典
<Application.Resources>
<ResourceDictionary>
<OnPlatform x:Key="OuterPadding" x:TypeArguments="Thickness">
<On Platform="Android">8 ,40,8,4</On>
<On Platform="iOS">20</On>
<On Platform="WinPhone">24</On>
</OnPlatform>
<!-- left, top, right, and bottom-->
</ResourceDictionary>
</Application.Resources>
其他答案可能对某些人有效,但最后我做错了:
InitializeComponent()
在App.xaml.cs中从未被调用。
我有一个if-then语句,在进入InitializeComponent()之前,该语句总是会碰到return
。
如果未调用该函数,App.xaml
对应用程序的其余部分不可访问,并且没有任何定义作为DynamicResource
可用
因此,我将InitializeComponent()
移动到if-then语句之前,现在它就像gangbusters一样工作
我希望这对别人有帮助 DefaultInsets是这里定义的静态资源。不同之处在于,StaticResource只对值进行一次查找,其中DynamicResource监视ResourceDictionary条目,监视对值的更改,并应用这些更改。如果您没有更改应用程序RD中的值,则应该使用StaticResource。ContentView是否与App.xaml在同一程序集中定义?@MaxHampton是的,如果我理解正确,它们在同一程序集中。所以我应该作为静态资源访问它,我明白了。但事实是,我以前也试过,但仍然不起作用。您认为我应该编辑OP以删除对DynamicResources的引用吗,因为这可能会混淆问题?唯一的区别似乎是您使用的是平台上的
。你的代码没有这个功能行吗?我会检查一下,同时你可能想将ResourceDictionary
示例中的OuterPadding
更改为OuterMargin
,以便它与更新的StackLayout
示例匹配。
<Application.Resources>
<ResourceDictionary>
<OnPlatform x:Key="OuterPadding" x:TypeArguments="Thickness">
<On Platform="Android">8 ,40,8,4</On>
<On Platform="iOS">20</On>
<On Platform="WinPhone">24</On>
</OnPlatform>
<!-- left, top, right, and bottom-->
</ResourceDictionary>
</Application.Resources>
<StackLayout
VerticalOptions="Center"
HeightRequest="225"
Margin="{DynamicResource OuterMargin}" >
<Entry
x:Name="nameControl"
Placeholder="Full Name"
Margin="{DynamicResource OuterMargin}"
/>
<Entry
x:Name="passwordControl"
IsPassword="True"
Placeholder="Password"
Margin="{DynamicResource OuterMargin}" />
</StackLayout>