我创建了一个自定义视图(MyCustomView),可以在android中使用。单击它时,它将打开一个包含列表的对话框(MyDialog)。
MainPageLayout -> MyCustomView ->单击-> MyDialog
MyDialog继承自MvxDialogFragment:
public class MyDialog : MvxDialogFragment
{
public event EventHandler ItemSourceChanged;
public ObservableCollection<MyItem> ItemsSource
{
get
{
return itemsSource;
}
set
{
itemsSource = value;
if (ItemSourceChanged != null)
{
ItemSourceChanged.Invoke(this, new EventArgs());
}
}
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.my_layout, container, false);
var listview = view.FindViewById<MvxListView>(Resource.Id.my_listview);
listview.ItemsSource = ItemsSource;
return view;
}
}ViewModel:
public class MyViewModel : MvxViewModel
{
public ObservableCollection<MyItem> MyCollection
{
get { return myCollection; }
private set { SetProperty(ref myCollection, value); }
}
}到目前为止,一切都很好--这就像预期的一样。在视图中创建绑定集,并显示VM的"MyCollection“列表。
但是,我非常希望将MyDialog与其他不同的集合一起使用,而不仅仅是ObservableCollection<MyItem>。为了实现这一点,我将MyDialog中的MyDialog更改为ObservableCollection<object>,但这将导致不再调用它的setter (通过绑定集),因此listview的itemSource设置为null。
我怎样才能使MyDialog更通用?
发布于 2015-02-16 15:23:51
公共类MyDialog<T>将使其成为通用类。
示例:www.dotnetperls.com/generic
发布于 2015-03-25 09:06:55
你试过使用dynamic吗?
public ObservableCollection<dynamic> ItemsSource我使用一个动态对象将对象和集合从一个ViewModel传递到下一个
https://stackoverflow.com/questions/28542375
复制相似问题