Пример #1
0
        /// <summary>
        /// Creates an <see cref="ObservableValue{T}"/> available via data binding from any page,
        /// affected by a source observable.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <param name="inputObservableSelector"></param>
        /// <param name="initialValue"></param>
        /// <returns></returns>
        public static ObservableValue <T> CreateGlobalProperty <T>(string name, Func <IObservable <T> > inputObservableSelector, T initialValue = default(T))
        {
            var observableValue = new ObservableValue <T>(initialValue);

            BaseViewModel.AddGlobalProperty <T>(name, observableValue);

            observableValue.AddInput(inputObservableSelector());

            return(observableValue);
        }
Пример #2
0
        /// <summary>
        /// Creates an <see cref="ObservableValue{T}"/> available via data binding, affected by a source observable, with late materialization
        /// of the observable logic.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="viewModel"></param>
        /// <param name="name"></param>
        /// <param name="inputObservableSelector"></param>
        /// <param name="initialValue"></param>
        /// <returns></returns>
        public static ObservableValue <T> CreateProperty <T>(
            this BaseViewModel viewModel,
            string name,
            Func <IObservable <T>, IObservable <T> > inputObservableSelector,
            T initialValue = default(T))
        {
            var observableValue = new ObservableValue <T>(initialValue);

            viewModel.AddProperty <T>(name, observableValue);
            viewModel.AddTrigger(ViewModelState.Loaded, () => observableValue.AddInput(inputObservableSelector));

            return(observableValue);
        }