Esempio n. 1
0
        private static DispatchItem CreateFromAdapterView()
        {
            // AdapterView is more complicated because there are two events - one for select and one for deselect
            // respond to both
            const string propName = "SelectedItem";

            return(new DispatchItem
            {
                Type = typeof(AdapterView),
                Property = propName,
                Func = (x, ex) =>
                {
                    var adapterView = (AdapterView)x;

                    var itemSelected = Observable.FromEvent <EventHandler <AdapterView.ItemSelectedEventArgs>, ObservedChange <object, object> >(
                        eventHandler =>
                    {
                        void Handler(object sender, AdapterView.ItemSelectedEventArgs e) => eventHandler(new ObservedChange <object, object>(adapterView, ex));
                        return Handler;
                    },
                        h => adapterView.ItemSelected += h,
                        h => adapterView.ItemSelected -= h);

                    var nothingSelected = Observable.FromEvent <EventHandler <AdapterView.NothingSelectedEventArgs>, ObservedChange <object, object> >(
                        eventHandler =>
                    {
                        void Handler(object sender, AdapterView.NothingSelectedEventArgs e) => eventHandler(new ObservedChange <object, object>(adapterView, ex));
                        return Handler;
                    },
                        h => adapterView.NothingSelected += h,
                        h => adapterView.NothingSelected -= h);

                    return Observable.Merge(itemSelected, nothingSelected);
                }
            });
        private static DispatchTuple CreateFromAdapterView()
        {
            // AdapterView is more complicated because there are two events - one for select and one for deselect
            // respond to both
            const string propName = "SelectedItem";

            return(new DispatchTuple
            {
                Type = typeof(AdapterView),
                Property = propName,
                Func = (x, ex) =>
                {
                    var v = (AdapterView)x;

                    return Observable.Merge(
                        Observable.FromEventPattern <AdapterView.ItemSelectedEventArgs>(h => v.ItemSelected += h, h => v.ItemSelected -= h)
                        .Select(_ => new ObservedChange <object, object>(v, ex)),
                        Observable.FromEventPattern <AdapterView.NothingSelectedEventArgs>(h => v.NothingSelected += h, h => v.NothingSelected -= h)
                        .Select(_ => new ObservedChange <object, object>(v, ex)));
                }
            });
        }