框架在点击时变得透明

时间:2018-04-16 06:33:50

标签: xamarin xamarin.forms xamarin.ios

我正在使用ListView处理Xamarin.Forms项目,每个项目都有一个带有白色背景的Frame。我的问题是我最近注意到当我点击项目时它使Frame的背景变白。它仍然显示所有其他对象,但框架变得透明。

框架只是

<Frame CornerRadius="10" Padding="0" Margin="10, 10, 10, 5" BackgroundColor="White">...</Frame>

1 个答案:

答案 0 :(得分:1)

促进上述评论 - 为了可读性而回答真实答案:

您看到的行为特定于iOS。您可以通过使用效果覆盖默认行为来解决此问题,如下所示:

[assembly: ResolutionGroupName("MyEffects")]
[assembly: ExportEffect(typeof(ListViewHighlightEffect), nameof(ListViewHighlightEffect))]
namespace MyProject.iOS.Effects
{
    public class ListViewHighlightEffect : PlatformEffect
    {
        protected override void OnAttached()
        {
            var listView = (UIKit.UITableView)Control;

            listView.AllowsSelection = false;
        }

        protected override void OnDetached()
        {

        }
    }
}

然后,您可以将它应用于您的视图代码隐藏:

MyListView.Effects.Add(Effect.Resolve($"MyEffects.ListViewHighlightEffect"));

我对完整的解决方案here

进行了简短的撰写

或者,如果你想保持选择项目的能力,一个可能的解决方法是在你的代码中添加一个ItemTapped处理程序并将其清空

MyListView.SelectedItem = null;