Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin 框架在点击时变为透明_Xamarin_Xamarin.forms_Xamarin.ios - Fatal编程技术网

Xamarin 框架在点击时变为透明

Xamarin 框架在点击时变为透明,xamarin,xamarin.forms,xamarin.ios,Xamarin,Xamarin.forms,Xamarin.ios,我正在处理一个带有ListView的Xamarin.Forms项目,每个项目都有一个白色背景的框架。我的问题是,我最近注意到,当我点击该项目时,它会使框架的背景变白。它仍然显示所有其他对象,但帧变为透明 这个框架很简单 <Frame CornerRadius="10" Padding="0" Margin="10, 10, 10, 5" BackgroundColor="White">...</Frame> 。。。 为了可读性,将上述评论答案提升为真实答案: 您看到的行

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

这个框架很简单

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

为了可读性,将上述评论答案提升为真实答案:

您看到的行为是特定于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"));
我写了一篇关于完整解决方案的短文

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

MyListView.SelectedItem = null;

我很确定这不是框架,但是你的listview选中的项目可以尝试在本机列表视图中删除选中的项目背景吗?我最近用特效解决了这个问题,并做了一个快速的总结。也许这会有帮助@乔干得很好!