我已按照以下说明创建了一个带有上下文操作的ListView-developer.xamarin.com/guides/xamarin-forms/user-interface/listview/interactivity/#Context_Actions
这是XAML
<ListView x:Name="ContextDemoList" ItemsSource="{Binding Notes}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.ContextActions>
<MenuItem Clicked="OnMore" CommandParameter="{Binding .}" Text="More" />
<MenuItem Clicked="OnDelete" CommandParameter="{Binding .}" Text="Delete" IsDestructive="True" />
</ViewCell.ContextActions>
<StackLayout Padding="15,5">
<Label Text="{Binding Subject}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这让我的上下文操作很好,但在iOS中按钮获得绿色文本。 iOS simulator screen cap。当我部署到物理设备时,会看到相同的结果。
我发现了这篇文章https://forums.xamarin.com/discussion/34713/how-to-change-the-menuitem-colors-of-viewlist-in-ios-viewcellrenderer,其中概述了自定义MenuItem背景颜色的可能解决方案,包括自定义渲染,反射或插件,其中不利用本机元素。但我更愿意通过跨平台获得原生经验。
有谁知道绿色文字的来源?或者,如果Xamarin已经提出了一种定制方法吗?
答案 0 :(得分:1)
原来这是部分复制粘贴问题,也是部分iOS预期的功能。
设置UIButton标题颜色也将设置UIMenuItem文本颜色。
namespace Project.iOS
{
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
...
// --- offending line of code ---
UIButton.Appearance.SetTitleColor(UIColor.FromRGB(0, 127, 14), UIControlState.Normal);
...
}
}
}
有一种解决方案可以为原生iOS应用自定义两种颜色,这些颜色可能会将一些有用的信息转移到Xamarin,Text color in UIMenuController affected by UIButton appearance setting。但我没有尝试这样做。