Hei*_*tad 5 c# android mvvmcross xamarin mvxbind
我有一个ScrollView最初包含两个MvxListView控件.
其ListView控制在一个ScrollView不被安卓虽然,这是有道理的支持,因为他们都试图填补母公司的高度,并提供自己的滚动逻辑.
我想要的是两个不可滚动的列表,它们的全部高度在我的内部ScrollView.如果不手动破解高度ListView,MvxListView扩展不支持此功能.
我想要这个的原因是因为我有两个单独的列表,我必须分开源,它们都有自己的标题.我需要所有这些都可以在一个内滚动ScrollView.
然后我发现MvxLinearLayout哪个是可绑定的LinearLayout,它具有ItemSource我可以绑定的属性.它工作得很好,它显示我的项目并获得所有项目的全部高度,所以我可以滚动我的列表ScrollView.问题是它似乎没有ItemClick属性,所以我无法从列表中获取用户输入.
有没有人知道以可绑定的方式做到这一点的干净方式?我不想onItemClick在后面的代码中附加处理程序.还有另一个MvvmCross控件可以做我想要的吗?
Ond*_*unc 10
您可以扩展MvxLinearLayout以支持ItemClick:
public class MvxClickableLinearLayout : MvxLinearLayout
{
public MvxClickableLinearLayout(Context context, IAttributeSet attrs)
: this(context, attrs, new MvxClickableLinearLayoutAdapter(context))
{
}
public MvxClickableLinearLayout(Context context, IAttributeSet attrs, MvxClickableLinearLayoutAdapter adapter)
: base(context, attrs, adapter)
{
var mvxClickableLinearLayoutAdapter = Adapter as MvxClickableLinearLayoutAdapter;
if (mvxClickableLinearLayoutAdapter != null)
{
mvxClickableLinearLayoutAdapter.OnItemClick = OnItemClick;
}
}
public ICommand ItemClick { get; set; }
public void OnItemClick(object item)
{
if (ItemClick != null && ItemClick.CanExecute(item))
{
ItemClick.Execute(item);
}
}
}
Run Code Online (Sandbox Code Playgroud)
适配器:
public class MvxClickableLinearLayoutAdapter : MvxAdapterWithChangedEvent, View.IOnClickListener
{
public delegate void ItemClickDelegate(object item);
public ItemClickDelegate OnItemClick;
public MvxClickableLinearLayoutAdapter(Context context)
: base(context)
{
}
public void OnClick(View view)
{
var mvxDataConsumer = view as IMvxDataConsumer;
if (mvxDataConsumer != null && OnItemClick != null)
{
OnItemClick(mvxDataConsumer.DataContext);
}
}
protected override View GetView(int position, View convertView, ViewGroup parent, int templateId)
{
View view = base.GetView(position, convertView, parent, templateId);
view.SetOnClickListener(this);
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以绑定到ItemClick就像你使用ListView:
local:MvxBind="ItemClick SomeCommand"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |