0
我想要一個帶有一個下拉模板的MvxSpinner,它有一個按鈕。點擊按鈕會彈出一個關於該項目的信息的網頁瀏覽器。按鈕點擊工作正常,但現在無法選擇該項目。有沒有解決的辦法?帶MvxDropDownItemTemplate中的按鈕的MvxSpinner
我想要一個帶有一個下拉模板的MvxSpinner,它有一個按鈕。點擊按鈕會彈出一個關於該項目的信息的網頁瀏覽器。按鈕點擊工作正常,但現在無法選擇該項目。有沒有解決的辦法?帶MvxDropDownItemTemplate中的按鈕的MvxSpinner
我想出了一種方法來完成這項工作。不知道這是否是最佳做法,但對我有用。
我讓Spinner的ItemsSource成爲一個enumerable的視圖模型。有一個按鈕單擊命令和一個事件來處理該項目中的任何其他觸摸。我分類爲MvxSpinner和MvxAdapter。在subclassed適配器中,我將事件分配給一個處理程序,該程序以編程方式單擊後退按鈕以關閉下拉列表。我還從適配器向微調器發送了一個方法,以便設置所選項目。
public class ButtonSpinner : MvxSpinner
{
public ButtonSpinner(Context context, IAttributeSet attrs) : base(context, attrs)
{
var adapter = new ButtonAdapter(context, routedItemClick);
adapter.ItemTemplateId = Adapter.ItemTemplateId;
adapter.DropDownItemTemplateId = Adapter.DropDownItemTemplateId;
adapter.SimpleViewLayoutId = Adapter.SimpleViewLayoutId;
this.Adapter = adapter;
}
private void routedItemClick(object sender, ItemClickEventArgs e)
{
this.SetSelection((int)sender);
}
}
public class ButtonAdapter : MvxAdapter
{
EventHandler<Android.Widget.AdapterView.ItemClickEventArgs> _routedItemClick;
View _parent;
public override IEnumerable ItemsSource {
get {
return base.ItemsSource;
}
set {
base.ItemsSource = value;
if (value != null)
{
foreach(var item in value)
{
var dialectItem = item as DialectItemViewModel;
dialectItem.DialectSelected += (object obj, EventArgs args) => {
var dialectItems = ItemsSource as List<DialectItemViewModel>;
_routedItemClick(dialectItems.IndexOf(dialectItem), null);
_parent.RootView.DispatchKeyEvent(new KeyEvent(KeyEventActions.Down, Keycode.Back));
_parent.RootView.DispatchKeyEvent(new KeyEvent(KeyEventActions.Up, Keycode.Back));
};
}
}
}
}
public ButtonAdapter(Context context, EventHandler<Android.Widget.AdapterView.ItemClickEventArgs> routedItemClick) : base(context)
{
_routedItemClick = routedItemClick;
}
protected override Android.Views.View GetView (int position, Android.Views.View convertView, Android.Views.ViewGroup parent, int templateId)
{
if (_parent == null)
_parent = parent;
return base.GetView (position, convertView, parent, templateId);
}
}
聽起來不像mvx問題 - 更一般的機器人問題。 – Stuart
由於該按鈕使觸摸事件遠離微調框,因此未選擇該項目。這不是一個Mvx問題,你應該重新考慮你的標籤。 – Cheesebaron