我制作了一个自定义视图(MyCustomView),可以在android layout xml中使用。单击它时,它会打开一个包含列表的对话框(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&#34; MyCollection&#34;的列表。显示。
但是,我非常希望将MyDialog与其他不同的集合一起使用,而不仅仅是ObservableCollection<MyItem>
。为了实现这一点,我将MyDialog中的ItemsSource
更改为ObservableCollection<object>
,但这会导致其setter不再被调用(通过绑定集),因此listview的itemSource设置为null。
如何让MyDialog更通用?
答案 0 :(得分:0)
公共课MyDialog<T>
会使其成为通用的。
答案 1 :(得分:0)
您是否尝试使用动态?
public ObservableCollection<dynamic> ItemsSource
我使用动态对象将对象和集合从一个ViewModel传递到下一个