我正在为Android,iOS,WinPhone和UWP开发多平台应用。我已经编写了自定义通用的OnPlatform类来实现特定平台的TextColor更改。标准版' OnPlatform'在XAML中只有iOS,Android和WinPhone。我需要的是UWP(见下面的代码)
public class OnPlatformExt<T> : OnPlatform<T>
{
public T Android { get; set; }
public T iOS { get; set; }
public T WinPhone { get; set; }
public T Windows { get; set; }
public T Other { get; set; }
public OnPlatformExt()
{
Android = default(T);
iOS = default(T);
WinPhone = default(T);
Windows = default(T);
Other = default(T);
}
public static implicit operator T(OnPlatformExt<T> onPlatform)
{
switch (Xamarin.Forms.Device.OS)
{
case Xamarin.Forms.TargetPlatform.Android:
return onPlatform.Android;
case Xamarin.Forms.TargetPlatform.iOS:
return onPlatform.iOS;
case Xamarin.Forms.TargetPlatform.WinPhone:
return onPlatform.WinPhone;
case Xamarin.Forms.TargetPlatform.Windows:
return onPlatform.Windows;
default:
return onPlatform.Other;
}
}
}
然后在App.xaml中汇编并在我的资源字典中用作
<local:OnPlatformExt x:TypeArguments="Color"
iOS="#f0f8ff"
Android="White"
WinPhone="#008566"
Windows="White"
Other="White" x:Key="LightTextColor" />
一切都很好。但是这仍然没有为我的按钮风格改变这种特殊的颜色。我想说的是,当我使用正常的适当的OnPlatform x:TypeArguments =&#34; Color&#34; ...然后它在特定平台上变换颜色。你们知道这段代码有什么问题吗?
答案 0 :(得分:1)
我检查了你的代码,发现没有错。我刚刚更改了您设置的颜色(请参阅下面的代码),然后我在MainPage.xaml中引用了资源字典,如BackgroundColor="{StaticResource Key=LightTextColor}"
。它在(Xamarin.UWP&amp; Xamarin.Android)中运行良好。您可以尝试在您的计算机上卸载该应用程序,清理解决方案并重新部署吗?如果它不起作用。请试试我的演示:GitHub。
<ResourceDictionary>
<local:OnPlatformExt
x:Key="LightTextColor"
x:TypeArguments="Color"
Android="Red"
Other="White"
WinPhone="White"
Windows="#008566"
iOS="#f0f8ff" />
</ResourceDictionary>