private static void RegisterDialogMembers(IBindingMemberProvider memberProvider) { memberProvider.Register(AttachedBindingMember.CreateMember <Element, object>(AttachedMemberConstants.Parent, (info, element) => element.Parent ?? BindingExtensions.AttachedParentMember.GetValue(element, null), (info, element, arg3) => BindingExtensions.AttachedParentMember.SetValue(element, arg3), (info, element, arg3) => BindingExtensions.AttachedParentMember.TryObserve(element, arg3))); IBindingMemberInfo member = memberProvider.GetBindingMember(typeof(EntryElement), "Changed", true, false); if (member != null) { memberProvider.Register(AttachedBindingMember.CreateEvent <EntryElement>("ValueChanged", (info, element, arg3) => member.TryObserve(element, arg3))); } memberProvider.Register(AttachedBindingMember.CreateEvent <StringElement>("Tapped", (info, element, arg3) => { var weakWrapper = arg3.ToWeakWrapper(); IDisposable unsubscriber = null; NSAction action = () => { if (!weakWrapper.EventListener.TryHandle(weakWrapper.EventListener, EventArgs.Empty)) { unsubscriber.Dispose(); } }; unsubscriber = WeakActionToken.Create(element, action, (stringElement, nsAction) => stringElement.Tapped -= nsAction); element.Tapped += action; return(unsubscriber); })); }
private static void RegisterViewMembers(IBindingMemberProvider memberProvider) { //View memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.View.Fragment)); memberProvider.Register(AttachedBindingMember.CreateMember <View, object>(AttachedMemberConstants.FindByNameMethod, ViewFindByNameMember)); memberProvider.Register(AttachedBindingMember.CreateMember <View, object>(AttachedMemberConstants.Parent, GetViewParentValue, SetViewParentValue, ObserveViewParent)); memberProvider.Register(AttachedBindingMember.CreateMember <View, bool>(AttachedMemberConstants.Focused, (info, view) => view.IsFocused, (info, view, arg3) => { if (arg3) { view.RequestFocus(); } else { view.ClearFocus(); } }, "FocusChange")); memberProvider.Register(AttachedBindingMember.CreateMember <View, bool>(AttachedMemberConstants.Enabled, (info, view) => view.Enabled, (info, view, value) => view.Enabled = value)); memberProvider.Register(AttachedBindingMember.CreateMember <View, ViewStates>("Visibility", (info, view) => view.Visibility, (info, view, value) => view.Visibility = value, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.View.Visible, (info, view) => view.Visibility == ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Visible : ViewStates.Gone, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.View.Hidden, (info, view) => view.Visibility != ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Gone : ViewStates.Visible, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <View, object>(AttachedMembers.Toolbar.MenuTemplate.Path)); memberProvider.Register(AttachedBindingMember.CreateEvent <View>("WidthChanged", (info, o, arg3) => new SizeObserver(o, arg3))); memberProvider.Register(AttachedBindingMember.CreateEvent <View>("HeightChanged", (info, o, arg3) => new SizeObserver(o, arg3))); }
private static void RegisterViewMembers(IBindingMemberProvider memberProvider) { //View memberProvider.Register(AttachedBindingMember.CreateAutoProperty <View, int>(AttachedMemberNames.MenuTemplate)); #if !API8 memberProvider.Register(AttachedBindingMember.CreateAutoProperty <View, int>(AttachedMemberNames.PopupMenuTemplate)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <View, string>(AttachedMemberNames.PopupMenuEvent, PopupMenuEventChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <View, string>(AttachedMemberNames.PlacementTargetPath)); #endif memberProvider.Register(AttachedBindingMember.CreateMember <View, object>(AttachedMemberConstants.Parent, GetViewParentValue, null, ObserveViewParent)); memberProvider.Register(AttachedBindingMember.CreateMember <View, object>(AttachedMemberConstants.FindByNameMethod, ViewFindByNameMember)); memberProvider.Register(AttachedBindingMember.CreateMember <View, bool>(AttachedMemberConstants.Focused, (info, view) => view.IsFocused, null, "FocusChange")); memberProvider.Register(AttachedBindingMember.CreateMember <View, bool>(AttachedMemberConstants.Enabled, (info, view) => view.Enabled, (info, view, value) => view.Enabled = value)); memberProvider.Register(AttachedBindingMember.CreateMember <View, ViewStates>("Visibility", (info, view) => view.Visibility, (info, view, value) => view.Visibility = value, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember <View, bool>("Visible", (info, view) => view.Visibility == ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Visible : ViewStates.Gone, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember <View, bool>("Hidden", (info, view) => view.Visibility != ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Gone : ViewStates.Visible, ObserveViewVisibility)); }
private static void RegisterMembers(IBindingMemberProvider memberProvider) { #if !APPCOMPAT //View memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ViewGroup.AddToBackStack)); #endif }
private static void RegisterCollectionViewMembers(IBindingMemberProvider memberProvider) { BindingServiceProvider.ResourceResolver.AddType("UICollectionViewScrollPosition", typeof(UICollectionViewScrollPosition)); BindingServiceProvider.ResourceResolver.AddType("UICollectionViewScrollDirection", typeof(UICollectionViewScrollDirection)); BindingServiceProvider.BindingMemberPriorities[CollectionViewUseAnimationsMember.Path] = 1; BindingServiceProvider.BindingMemberPriorities[CollectionViewScrollPositionMember.Path] = 1; //UICollectionView memberProvider.Register(CollectionViewUseAnimationsMember); memberProvider.Register(CollectionViewScrollPositionMember); memberProvider.Register(CollectionViewSelectedItemChangedEvent); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UICollectionView, IEnumerable>(AttachedMemberConstants.ItemsSource, CollectionViewItemsSourceChanged)); memberProvider.Register(AttachedBindingMember.CreateMember <UICollectionView, object>(AttachedMemberConstants.SelectedItem, GetCollectionViewSelectedItem, SetCollectionViewSelectedItem, (info, view, arg3) => (IDisposable)CollectionViewSelectedItemChangedEvent.SetValue(view, arg3))); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UICollectionView, ICollectionCellTemplateSelector>( AttachedMemberConstants.ItemTemplate, (view, args) => { if (args.NewValue != null) { args.NewValue.Initialize(view); } })); //UICollectionViewCell memberProvider.Register(CollectionViewCellSelectedMember); memberProvider.Register(CollectionViewCellHighlightedMember); memberProvider.Register(CollectionViewCellShouldHighlightMember); memberProvider.Register(CollectionViewCellShouldDeselectMember); memberProvider.Register(CollectionViewCellShouldSelectMember); }
public static void Register <TTarget, TType>([NotNull] this IBindingMemberProvider memberProvider, string path, [NotNull] IAttachedBindingMemberInfo <TTarget, TType> member, bool rewrite = true) where TTarget : class { Should.NotBeNull(memberProvider, nameof(memberProvider)); memberProvider.Register(typeof(TTarget), path, member, rewrite); }
public static TValue TryGetValue <TValue>([NotNull] this IBindingMemberProvider memberProvider, object item, [NotNull] string memberName, bool ignoreAttachedMembers = false, TValue defaultValue = default(TValue)) { Should.NotBeNull(memberProvider, "memberProvider"); return(memberProvider .GetBindingMember(item.GetType(), memberName, ignoreAttachedMembers, false) .TryGetValue(item, defaultValue)); }
protected override IBindingPathMembers UpdateInternal(IBindingPathMembers oldPath, bool hasSubscribers) { object source = GetActualSource(); if (source == null || source.IsUnsetValue()) { return(UnsetBindingPathMembers.Instance); } bool allMembersAvailable = true; IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; IList <string> items = Path.Parts; //Trying to get member using full path with dot, example BindingErrorProvider.Errors or ErrorProvider.Errors. if (items.Count == 2) { var pathMember = memberProvider.GetBindingMember(source.GetType(), Path.Path, _ignoreAttachedMembers, false); if (pathMember != null) { var observer = TryObserveMember(source, pathMember, true); if (observer != null) { _listeners.Add(observer); } return(new MultiBindingPathMembers(_lastMemberListener.Reference, source, new[] { pathMember })); } } int lastIndex = items.Count - 1; var members = new List <IBindingMemberInfo>(); for (int index = 0; index < items.Count; index++) { string name = items[index]; IBindingMemberInfo pathMember = memberProvider .GetBindingMember(source.GetType(), name, _ignoreAttachedMembers, true); members.Add(pathMember); var observer = TryObserveMember(source, pathMember, index == lastIndex); if (observer != null) { _listeners.Add(observer); } if (index == lastIndex) { break; } source = pathMember.GetValue(source, null); if (source == null || source.IsUnsetValue()) { allMembersAvailable = false; break; } } return(allMembersAvailable ? new MultiBindingPathMembers(_lastMemberListener.Reference, source, members) : UnsetBindingPathMembers.Instance); }
private static void RegisterCollectionViewMembers(IBindingMemberProvider memberProvider) { BindingServiceProvider.ResourceResolver.AddType(typeof(UICollectionViewScrollPosition)); BindingServiceProvider.ResourceResolver.AddType(typeof(UICollectionViewScrollDirection)); BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UICollectionView.UseAnimations] = BindingServiceProvider.TemplateMemberPriority + 1; BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UICollectionView.ScrollPosition] = BindingServiceProvider.TemplateMemberPriority + 1; //UICollectionView BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIView.ItemsSource.Override<UICollectionView>()); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UICollectionView.UseAnimations)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UICollectionView.ScrollPosition)); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UICollectionView.SelectedItemChangedEvent)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ItemsSource.Override<UICollectionView>(), CollectionViewItemsSourceChanged)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UICollectionView.SelectedItem, GetCollectionViewSelectedItem, SetCollectionViewSelectedItem, (info, view, arg3) => (IDisposable)view.SetBindingMemberValue(AttachedMembers.UICollectionView.SelectedItemChangedEvent, arg3))); var itemTemplateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.UICollectionView.ItemTemplateSelector, (view, args) => { if (args.NewValue != null) args.NewValue.Initialize(view); }); memberProvider.Register(itemTemplateMember); memberProvider.Register(typeof(UICollectionView), AttachedMemberConstants.ItemTemplate, itemTemplateMember, true); //UICollectionViewCell memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UICollectionViewCell.ClickEvent)); memberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.UICollectionViewCell.Selected, (info, cell) => { if (CollectionViewSourceBase.HasMask(cell, CollectionViewSourceBase.InitializingStateMask)) return null; var cellBindable = cell as UICollectionViewCellBindable; if (cellBindable == null) return cell.Selected; return cellBindable.SelectedBind.GetValueOrDefault(); }, (info, cell, arg3) => { var cellBindable = cell as UICollectionViewCellBindable; if (cellBindable == null) cell.Selected = arg3.GetValueOrDefault(); else cellBindable.SelectedBind = arg3; return true; })); memberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.UICollectionViewCell.Highlighted, (info, cell) => cell.Highlighted, (info, cell, arg3) => { cell.Highlighted = arg3; return true; })); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UICollectionViewCell.ShouldHighlight)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UICollectionViewCell.ShouldDeselect)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UICollectionViewCell.ShouldSelect)); }
private static void Register(IBindingMemberProvider memberProvider) { Should.NotBeNull(memberProvider, "memberProvider"); BindingBuilderExtensions.RegisterDefaultBindingMember <TextBlock>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember <TextBox>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember <Button>("Click"); BindingBuilderExtensions.RegisterDefaultBindingMember <ComboBox>(() => c => c.ItemsSource); BindingBuilderExtensions.RegisterDefaultBindingMember <ListBox>(() => c => c.ItemsSource); BindingBuilderExtensions.RegisterDefaultBindingMember <ProgressBar>(() => c => c.Value); //UIElement memberProvider.Register(AttachedBindingMember.CreateMember <UIElement, bool>("Visible", (info, view) => view.Visibility == Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Visible : Visibility.Collapsed, ObserveVisiblityMember)); memberProvider.Register(AttachedBindingMember.CreateMember <UIElement, bool>("Hidden", (info, view) => view.Visibility != Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Collapsed : Visibility.Visible, ObserveVisiblityMember)); //FrameworkElement memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, object>(AttachedMemberConstants.Parent, GetParentValue, SetParentValue, ObserveParentMember)); memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); #if SILVERLIGHT || WINDOWSCOMMON || WINDOWS_PHONE memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => FocusManager.GetFocusedElement() == control, null, "LostFocus")); memberProvider.Register(AttachedBindingMember .CreateMember <Control, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value)); #else memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => control.IsFocused, null, "LostFocus")); memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value, "IsEnabledChanged")); #endif //TextBox #if WINDOWSCOMMON memberProvider.Register(AttachedBindingMember.CreateMember <TextBox, string>("Text", (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, "TextChanged")); //TextBlock memberProvider.Register(AttachedBindingMember.CreateMember <TextBlock, string>("Text", (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock)); #else //WebBrowser memberProvider.Register(AttachedBindingMember.CreateMember <WebBrowser, Uri>("Source", (info, browser) => browser.Source, (info, browser, arg3) => browser.Source = arg3, "Navigated")); #endif }
private static void Register(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember <Entry>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember <Label>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember <Button>("Clicked"); BindingBuilderExtensions.RegisterDefaultBindingMember <ToolbarItem>("Clicked"); BindingBuilderExtensions.RegisterDefaultBindingMember <ListView>(() => c => c.ItemsSource); BindingBuilderExtensions.RegisterDefaultBindingMember <ProgressBar>(() => c => c.Progress); //Element memberProvider.Register(AttachedBindingMember .CreateMember <Element, object>(AttachedMemberConstants.Parent, GetParentValue, SetParentValue, ObserveParentMember)); memberProvider.Register(typeof(Element), "BindingContext", BindingMemberProvider.BindingContextMember, true); //VisualElement var visibleMember = memberProvider.GetBindingMember(typeof(VisualElement), ToolkitExtensions.GetMemberName <VisualElement>(() => element => element.IsVisible), true, false); if (visibleMember != null) { memberProvider.Register(typeof(VisualElement), "Visible", visibleMember, true); memberProvider.Register(AttachedBindingMember.CreateMember <VisualElement, bool>("Hidden", (info, element) => !element.IsVisible, (info, element, arg3) => element.IsVisible = !arg3, (info, element, arg3) => visibleMember.TryObserve(element, arg3))); } memberProvider.Register(AttachedBindingMember .CreateMember <VisualElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); memberProvider.Register(AttachedBindingMember.CreateMember <VisualElement, bool>(AttachedMemberConstants.Focused, (info, element) => element.IsFocused, (info, element, arg3) => { if (arg3) { element.Focus(); } else { element.Unfocus(); } }, (info, element, arg3) => BindingServiceProvider.WeakEventManager.Subscribe(element, "IsFocused", arg3))); var enabledMember = memberProvider.GetBindingMember(typeof(VisualElement), ToolkitExtensions.GetMemberName <VisualElement>(() => element => element.IsEnabled), true, false); if (enabledMember != null) { memberProvider.Register(typeof(VisualElement), AttachedMemberConstants.Enabled, enabledMember, true); } //Toolbar item enabledMember = memberProvider.GetBindingMember(typeof(ToolbarItem), "IsEnabled", true, false); if (enabledMember != null) { memberProvider.Register(typeof(ToolbarItem), AttachedMemberConstants.Enabled, enabledMember, true); } }
private static void Register(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember <TextBlock>(nameof(TextBlock.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember <TextBox>(nameof(TextBox.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember <Button>(nameof(Button.Click)); BindingBuilderExtensions.RegisterDefaultBindingMember <ComboBox>(nameof(ComboBox.ItemsSource)); BindingBuilderExtensions.RegisterDefaultBindingMember <ListBox>(nameof(ListBox.ItemsSource)); BindingBuilderExtensions.RegisterDefaultBindingMember <ProgressBar>(nameof(ProgressBar.Value)); //UIElement memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIElement.Visible, (info, view) => view.Visibility == Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Visible : Visibility.Collapsed, ObserveVisiblityMember)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIElement.Hidden, (info, view) => view.Visibility != Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Collapsed : Visibility.Visible, ObserveVisiblityMember)); //FrameworkElement memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, object>(AttachedMemberConstants.Parent, GetParentValue, SetParentValue, ObserveParentMember)); memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); #if WINDOWS_UWP memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => FocusManager.GetFocusedElement() == control, null, nameof(FrameworkElement.LostFocus))); memberProvider.Register(AttachedBindingMember .CreateMember <Control, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value)); #else memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => control.IsFocused, null, nameof(FrameworkElement.LostFocus))); memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value, nameof(FrameworkElement.IsEnabledChanged))); #endif #if WINDOWS_UWP //TextBox memberProvider.Register(AttachedBindingMember.CreateMember <TextBox, string>(nameof(TextBox.Text), (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, nameof(TextBox.TextChanged))); //TextBlock memberProvider.Register(AttachedBindingMember.CreateMember <TextBlock, string>(nameof(TextBlock.Text), (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock)); #else //WebBrowser memberProvider.Register(AttachedBindingMember.CreateMember <WebBrowser, Uri>(nameof(WebBrowser), (info, browser) => browser.Source, (info, browser, arg3) => browser.Source = arg3, nameof(WebBrowser.Navigated))); #endif }
protected override bool LoadInternal() { IocContainer.BindToConstant <IRepository>(new FileRepository()); #if !XAMARINFORMS IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersEx.UIView.IsBusy, IsBusyChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersEx.UIView.BusyMessage, BusyMessageChanged)); #endif return(true); }
protected override bool LoadInternal() { IocContainer.BindToConstant <IRepository>(new FileRepository()); IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UIView, bool>("IsBusy", IsBusyChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UIView, object>("BusyMessage", BusyMessageChanged)); return(true); }
protected override bool LoadInternal() { if (Mode != LoadMode.Design) { IocContainer.BindToConstant <IRepository>(new FileRepository()); } IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersEx.Control.IsBusy, IsBusyChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersEx.Control.BusyMessage, BusyMessageChanged)); return(true); }
/// <summary> /// Loads the current module. /// </summary> protected override bool LoadInternal() { //Registering attached property IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UILabel, string>("TextExt", TextExtMemberChanged, TextExtMemberAttached, TextExtGetDefaultValue)); memberProvider.Register(AttachedBindingMember.CreateMember <UILabel, string>("FormattedText", GetFormattedTextValue, SetFormattedTextValue, ObserveFormattedTextValue)); return(true); }
internal static void SetDefaultValues() { _valueConverter = BindingReflectionExtensions.Convert; _resourceResolver = new BindingResourceResolver(); _memberProvider = new BindingMemberProvider(); _visualTreeManager = new VisualTreeManager(); _weakEventManager = new WeakEventManager(); _bindingManager = new BindingManager(); _bindingProvider = new BindingProvider(); _observerProvider = new ObserverProvider(); _contextManager = new BindingContextManager(); }
private static void Register(IBindingMemberProvider memberProvider) { Should.NotBeNull(memberProvider, "memberProvider"); //DependencyObject memberProvider.Register(AttachedBindingMember.CreateMember <DependencyObject, ICollection <object> >( AttachedMemberConstants.ErrorsPropertyMember, GetErrors, SetErrors, ObserveErrors)); //UIElement memberProvider.Register(AttachedBindingMember.CreateMember <UIElement, bool>("Visible", (info, view) => view.Visibility == Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Visible : Visibility.Collapsed, ObserveVisiblityMember)); memberProvider.Register(AttachedBindingMember.CreateMember <UIElement, bool>("Hidden", (info, view) => view.Visibility != Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Collapsed : Visibility.Visible, ObserveVisiblityMember)); //FrameworkElement memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, object>(AttachedMemberConstants.Parent, GetParentValue, null, ObserveParentMember)); memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); #if SILVERLIGHT || NETFX_CORE || WINDOWSCOMMON memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => FocusManager.GetFocusedElement() == control, null, "LostFocus")); memberProvider.Register(AttachedBindingMember .CreateMember <Control, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value)); #else memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => control.IsFocused, null, "LostFocus")); memberProvider.Register(AttachedBindingMember .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value, "IsEnabledChanged")); #endif //TextBox #if WINDOWSCOMMON || NETFX_CORE memberProvider.Register(AttachedBindingMember.CreateMember <TextBox, string>("Text", (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, "TextChanged")); //TextBlock memberProvider.Register(AttachedBindingMember.CreateMember <TextBlock, string>("Text", (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock)); #endif }
private static void RegisterPreferenceMembers(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Preference.Click); BindingBuilderExtensions.RegisterDefaultBindingMember <TwoStatePreference>(nameof(TwoStatePreference.Checked)); BindingBuilderExtensions.RegisterDefaultBindingMember <ListPreference>(nameof(ListPreference.Value)); BindingBuilderExtensions.RegisterDefaultBindingMember <MultiSelectListPreference>(nameof(MultiSelectListPreference.Values)); BindingBuilderExtensions.RegisterDefaultBindingMember <EditTextPreference>(nameof(EditTextPreference.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.PreferenceGroup.ItemsSource); var changeMember = AttachedBindingMember.CreateEvent(AttachedMembers.Preference.ValueChangedEvent); BindingServiceProvider.MemberProvider.Register(changeMember); BindingServiceProvider.MemberProvider.Register(typeof(TwoStatePreference), "CheckedChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(MultiSelectListPreference), "ValuesChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(ListPreference), "EntryChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(MultiSelectListPreference), "EntryChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(EditTextPreference), "TextChanged", changeMember, true); //ListPreference memberProvider.Register( AttachedBindingMember.CreateMember <ListPreference, IEnumerable <string> >("EntryValues", (info, preference) => preference.GetEntryValues(), (info, preference, arg3) => preference.SetEntryValues(arg3 == null ? Empty.Array <string>() : arg3.ToArray()))); memberProvider.Register( AttachedBindingMember.CreateMember <ListPreference, IEnumerable <string> >("Entries", (info, preference) => preference.GetEntries(), (info, preference, arg3) => preference.SetEntries(arg3 == null ? Empty.Array <string>() : arg3.ToArray()))); //MultiSelectListPreference memberProvider.Register( AttachedBindingMember.CreateMember <MultiSelectListPreference, IEnumerable <string> >("EntryValues", (info, preference) => preference.GetEntryValues(), (info, preference, arg3) => preference.SetEntryValues(arg3 == null ? Empty.Array <string>() : arg3.ToArray()))); memberProvider.Register( AttachedBindingMember.CreateMember <MultiSelectListPreference, IEnumerable <string> >("Entries", (info, preference) => preference.GetEntries(), (info, preference, arg3) => preference.SetEntries(arg3 == null ? Empty.Array <string>() : arg3.ToArray()))); //PreferenceGroup memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemsSource, PreferenceGroupItemsSourceChanged)); var templateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemTemplateSelector); memberProvider.Register(templateMember); memberProvider.Register(AttachedMemberConstants.ItemTemplate, templateMember); }
private static void Register(IBindingMemberProvider memberProvider) { //Element memberProvider.Register(AttachedBindingMember .CreateMember <Element, object>(AttachedMemberConstants.Parent, GetParentValue, null, ObserveParentMember)); memberProvider.Register(typeof(Element), "BindingContext", BindingMemberProvider.BindingContextMember, true); //VisualElement var visibleMember = memberProvider.GetBindingMember(typeof(VisualElement), ToolkitExtensions.GetMemberName <VisualElement>(element => element.IsVisible), true, false); if (visibleMember != null) { memberProvider.Register(typeof(VisualElement), "Visible", visibleMember, true); memberProvider.Register(AttachedBindingMember.CreateMember <VisualElement, bool>("Hidden", (info, element) => !element.IsVisible, (info, element, arg3) => element.IsVisible = !arg3, (info, element, arg3) => visibleMember.TryObserve(element, arg3))); } memberProvider.Register(AttachedBindingMember .CreateMember <VisualElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); memberProvider.Register(AttachedBindingMember.CreateMember <VisualElement, bool>(AttachedMemberConstants.Focused, (info, element) => element.IsFocused, (info, element, arg3) => { if (arg3) { element.Focus(); } else { element.Unfocus(); } }, (info, element, arg3) => BindingServiceProvider.WeakEventManager.Subscribe(element, "IsFocused", arg3))); var enabledMember = memberProvider.GetBindingMember(typeof(VisualElement), ToolkitExtensions.GetMemberName <VisualElement>(element => element.IsEnabled), true, false); if (enabledMember != null) { memberProvider.Register(typeof(VisualElement), AttachedMemberConstants.Enabled, enabledMember, true); } //Toolbar item enabledMember = memberProvider.GetBindingMember(typeof(ToolbarItem), "IsEnabled", true, false); if (enabledMember != null) { memberProvider.Register(typeof(ToolbarItem), AttachedMemberConstants.Enabled, enabledMember, true); } }
/// <summary> /// Updates the current values. /// </summary> protected override void UpdateInternal() { try { ClearListeners(); object source = GetActualSource(); if (source == null || source.IsUnsetValue()) { _members = UnsetBindingPathMembers.Instance; return; } bool allMembersAvailable = true; IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; IList <string> items = Path.Parts; int lastIndex = items.Count - 1; var members = new List <IBindingMemberInfo>(); for (int index = 0; index < items.Count; index++) { string name = items[index]; IBindingMemberInfo pathMember = memberProvider .GetBindingMember(source.GetType(), name, _ignoreAttachedMembers, true); members.Add(pathMember); var observer = TryObserveMember(source, pathMember, index == lastIndex); if (observer != null) { _listeners.Add(observer); } if (index == lastIndex) { break; } source = pathMember.GetValue(source, null); if (source == null || source.IsUnsetValue()) { allMembersAvailable = false; break; } } _members = allMembersAvailable ? new MultiBindingPathMembers(_selfReference, source, Path, members) : UnsetBindingPathMembers.Instance; } catch (Exception) { _members = UnsetBindingPathMembers.Instance; throw; } }
internal static void SetDefaultValues() { BindingCultureInfo = null; _updateEventFinder = FindUpdateEvent; _bindingPathFactory = BindingPath.Create; _valueConverter = BindingReflectionExtensions.Convert; _resourceResolver = new BindingResourceResolver(); _memberProvider = new BindingMemberProvider(); _visualTreeManager = new VisualTreeManager(); _weakEventManager = new WeakEventManager(); _bindingManager = new BindingManager(); _bindingProvider = new BindingProvider(); _observerProvider = new ObserverProvider(); _contextManager = new BindingContextManager(); }
/// <summary> /// Loads the current module. /// </summary> protected override bool LoadInternal() { BindingServiceProvider.ResourceResolver.AddObject("buttonTemplate", new BindingResourceObject(new ButtonItemTemplate())); //Registering attached property IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UILabel, string>("TextExt", TextExtMemberChanged, TextExtMemberAttached, TextExtGetDefaultValue)); memberProvider.Register(AttachedBindingMember.CreateMember <UILabel, string>("FormattedText", GetFormattedTextValue, SetFormattedTextValue, ObserveFormattedTextValue)); return(true); }
private static void RegisterDialogMembers(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember <Element>(nameof(Element.Caption)); memberProvider.Register(AttachedBindingMember.CreateMember <Element, string>(nameof(Element.Caption), (info, element) => element.Caption, (info, element, arg3) => { element.Caption = arg3; element.Reload(); })); memberProvider.Register(AttachedBindingMember.CreateMember <Element, object>(AttachedMemberConstants.ParentExplicit, (info, element) => element.Parent, null)); BindingBuilderExtensions.RegisterDefaultBindingMember <EntryElement>(nameof(EntryElement.Value)); IBindingMemberInfo member = memberProvider.GetBindingMember(typeof(EntryElement), nameof(EntryElement.Changed), true, false); if (member != null) { memberProvider.Register(AttachedBindingMember.CreateEvent <EntryElement>("ValueChanged", (info, element, arg3) => member.TryObserve(element, arg3))); } BindingBuilderExtensions.RegisterDefaultBindingMember <StringElement>(nameof(StringElement.Value)); memberProvider.Register(AttachedBindingMember.CreateMember <StringElement, string>(nameof(StringElement.Value), (info, element) => element.Value, (info, element, arg3) => { element.Value = arg3; element.Reload(); })); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.StringElement.TappedEvent, (info, element, arg3) => { var weakWrapper = arg3.ToWeakWrapper(); IDisposable unsubscriber = null; Action action = () => { if (!weakWrapper.EventListener.TryHandle(weakWrapper.EventListener, EventArgs.Empty)) { unsubscriber.Dispose(); } }; unsubscriber = WeakActionToken.Create(element, action, (stringElement, nsAction) => stringElement.Tapped -= nsAction); element.Tapped += action; return(unsubscriber); })); }
/// <summary> /// Loads the current module. /// </summary> protected override bool LoadInternal() { //Registering attached property IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; memberProvider.Register( AttachedBindingMember.CreateMember <ListView, object>(AttachedMemberConstants.SelectedItem, GetListViewSelectedItem, SetListViewSelectedItem, "ItemSelectionChanged")); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <Label, string>("TextExt", TextExtMemberChanged, TextExtMemberAttached, TextExtGetDefaultValue)); memberProvider.Register(AttachedBindingMember.CreateMember <Label, string>("FormattedText", GetFormattedTextValue, SetFormattedTextValue, ObserveFormattedTextValue)); return(true); }
private static void RegisterPreferenceMembers(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Preference.Click); BindingBuilderExtensions.RegisterDefaultBindingMember<TwoStatePreference>(() => preference => preference.Checked); BindingBuilderExtensions.RegisterDefaultBindingMember<ListPreference>(() => preference => preference.Value); BindingBuilderExtensions.RegisterDefaultBindingMember<MultiSelectListPreference>(() => preference => preference.Values); BindingBuilderExtensions.RegisterDefaultBindingMember<EditTextPreference>(() => preference => preference.Text); BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.PreferenceGroup.ItemsSource); var changeMember = AttachedBindingMember.CreateEvent(AttachedMembers.Preference.ValueChangedEvent); BindingServiceProvider.MemberProvider.Register(changeMember); BindingServiceProvider.MemberProvider.Register(typeof(TwoStatePreference), "CheckedChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(MultiSelectListPreference), "ValuesChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(ListPreference), "EntryChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(MultiSelectListPreference), "EntryChanged", changeMember, true); BindingServiceProvider.MemberProvider.Register(typeof(EditTextPreference), "TextChanged", changeMember, true); //ListPreference memberProvider.Register( AttachedBindingMember.CreateMember<ListPreference, IEnumerable<string>>("EntryValues", (info, preference) => preference.GetEntryValues(), (info, preference, arg3) => preference.SetEntryValues(arg3 == null ? Empty.Array<string>() : arg3.ToArray()))); memberProvider.Register( AttachedBindingMember.CreateMember<ListPreference, IEnumerable<string>>("Entries", (info, preference) => preference.GetEntries(), (info, preference, arg3) => preference.SetEntries(arg3 == null ? Empty.Array<string>() : arg3.ToArray()))); //MultiSelectListPreference memberProvider.Register( AttachedBindingMember.CreateMember<MultiSelectListPreference, IEnumerable<string>>("EntryValues", (info, preference) => preference.GetEntryValues(), (info, preference, arg3) => preference.SetEntryValues(arg3 == null ? Empty.Array<string>() : arg3.ToArray()))); memberProvider.Register( AttachedBindingMember.CreateMember<MultiSelectListPreference, IEnumerable<string>>("Entries", (info, preference) => preference.GetEntries(), (info, preference, arg3) => preference.SetEntries(arg3 == null ? Empty.Array<string>() : arg3.ToArray()))); //PreferenceGroup memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemsSource, PreferenceGroupItemsSourceChanged)); var templateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemTemplateSelector); memberProvider.Register(templateMember); memberProvider.Register(AttachedMemberConstants.ItemTemplate, templateMember); }
private static void Register(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember<Entry>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember<Label>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember<Button>("Clicked"); BindingBuilderExtensions.RegisterDefaultBindingMember<ToolbarItem>("Clicked"); BindingBuilderExtensions.RegisterDefaultBindingMember<ListView>(() => c => c.ItemsSource); BindingBuilderExtensions.RegisterDefaultBindingMember<ProgressBar>(() => c => c.Progress); //Element memberProvider.Register(AttachedBindingMember .CreateMember<Element, object>(AttachedMemberConstants.ParentExplicit, GetParentValue, SetParentValue, ObserveParentMember)); memberProvider.Register(typeof(Element), "BindingContext", BindingMemberProvider.BindingContextMember, true); //VisualElement var visibleMember = memberProvider.GetBindingMember(typeof(VisualElement), ToolkitExtensions.GetMemberName<VisualElement>(() => element => element.IsVisible), true, false); if (visibleMember != null) { memberProvider.Register(typeof(VisualElement), "Visible", visibleMember, true); memberProvider.Register(AttachedBindingMember.CreateMember<VisualElement, bool>("Hidden", (info, element) => !element.IsVisible, (info, element, arg3) => element.IsVisible = !arg3, (info, element, arg3) => visibleMember.TryObserve(element, arg3))); } memberProvider.Register(AttachedBindingMember .CreateMember<VisualElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); memberProvider.Register(AttachedBindingMember.CreateMember<VisualElement, bool>(AttachedMemberConstants.Focused, (info, element) => element.IsFocused, (info, element, arg3) => { if (arg3) element.Focus(); else element.Unfocus(); }, (info, element, arg3) => BindingServiceProvider.WeakEventManager.Subscribe(element, "IsFocused", arg3))); var enabledMember = memberProvider.GetBindingMember(typeof(VisualElement), ToolkitExtensions.GetMemberName<VisualElement>(() => element => element.IsEnabled), true, false); if (enabledMember != null) memberProvider.Register(typeof(VisualElement), AttachedMemberConstants.Enabled, enabledMember, true); //Toolbar item enabledMember = memberProvider.GetBindingMember(typeof(ToolbarItem), "IsEnabled", true, false); if (enabledMember != null) memberProvider.Register(typeof(ToolbarItem), AttachedMemberConstants.Enabled, enabledMember, true); }
public static IBindingMemberInfo TryFindMemberChangeEvent([NotNull] IBindingMemberProvider memberProvider, [NotNull] Type type, [NotNull] string memberName) { Should.NotBeNull(memberProvider, "memberProvider"); var member = memberProvider.GetBindingMember(type, memberName + "Changed", false, false); if (member == null || member.MemberType != BindingMemberType.Event) { member = memberProvider.GetBindingMember(type, memberName + "Change", false, false); } if (member == null || member.MemberType != BindingMemberType.Event) { return(null); } return(member); }
private static void RegisterTableViewMembers(IBindingMemberProvider memberProvider) { BindingServiceProvider.ResourceResolver.AddType("UITableViewRowAnimation", typeof(UITableViewRowAnimation)); BindingServiceProvider.ResourceResolver.AddType("UITableViewScrollPosition", typeof(UITableViewScrollPosition)); BindingServiceProvider.ResourceResolver.AddType("UITableViewCellEditingStyle", typeof(UITableViewCellEditingStyle)); BindingServiceProvider.ResourceResolver.AddType("UITableViewCellAccessory", typeof(UITableViewCellAccessory)); BindingServiceProvider.ResourceResolver.AddType("UITableViewCellSelectionStyle", typeof(UITableViewCellSelectionStyle)); BindingServiceProvider.ResourceResolver.AddType("UITableViewCellSeparatorStyle", typeof(UITableViewCellSeparatorStyle)); BindingServiceProvider.ResourceResolver.AddType("UITableViewCellStyle", typeof(UITableViewCellStyle)); BindingServiceProvider.BindingMemberPriorities[TableViewUseAnimationsMember.Path] = 1; BindingServiceProvider.BindingMemberPriorities[TableViewAddAnimationMember.Path] = 1; BindingServiceProvider.BindingMemberPriorities[TableViewRemoveAnimationMember.Path] = 1; BindingServiceProvider.BindingMemberPriorities[TableViewReplaceAnimationMember.Path] = 1; BindingServiceProvider.BindingMemberPriorities[TableViewScrollPositionMember.Path] = 1; BindingServiceProvider.BindingMemberPriorities[TableViewCellBindMember.Path] = 1; //UITableView memberProvider.Register(TableViewReadOnlyMember); memberProvider.Register(TableViewCellBindMember); memberProvider.Register(TableViewAddAnimationMember); memberProvider.Register(TableViewRemoveAnimationMember); memberProvider.Register(TableViewReplaceAnimationMember); memberProvider.Register(TableViewScrollPositionMember); memberProvider.Register(TableViewDefaultCellStyleMember); memberProvider.Register(TableViewSelectedItemChangedEvent); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UITableView, IEnumerable>(AttachedMemberConstants.ItemsSource, TableViewItemsSourceChanged)); memberProvider.Register(AttachedBindingMember.CreateMember <UITableView, object>(AttachedMemberConstants.SelectedItem, GetTableViewSelectedItem, SetTableViewSelectedItem, (info, view, arg3) => (IDisposable)TableViewSelectedItemChangedEvent.SetValue(view, arg3))); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <UITableView, ITableCellTemplateSelector>(AttachedMemberConstants.ItemTemplate)); //UITableViewCell memberProvider.Register(TableViewCellAccessoryButtonTappedEvent); memberProvider.Register("Click", TableViewCellAccessoryButtonTappedEvent); memberProvider.Register(TableViewCellDeleteClickEvent); memberProvider.Register(TableViewCellInsertClickEvent); memberProvider.Register(TableViewCellMoveableMember); memberProvider.Register(TitleForDeleteConfirmationMember); memberProvider.Register(TableViewCellEditingStyleMember); memberProvider.Register(TableViewCellSelectedMember); memberProvider.Register(TableViewCellHighlightedMember); memberProvider.Register(TableViewCellEditingMember); memberProvider.Register(TableViewCellShouldHighlightMember); }
private static void RegisterDialogMembers(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember<Element>(nameof(Element.Caption)); memberProvider.Register(AttachedBindingMember.CreateMember<Element, string>(nameof(Element.Caption), (info, element) => element.Caption, (info, element, arg3) => { element.Caption = arg3; element.Reload(); })); memberProvider.Register(AttachedBindingMember.CreateMember<Element, object>(AttachedMemberConstants.ParentExplicit, (info, element) => element.Parent, null)); BindingBuilderExtensions.RegisterDefaultBindingMember<EntryElement>(nameof(EntryElement.Value)); IBindingMemberInfo member = memberProvider.GetBindingMember(typeof(EntryElement), nameof(EntryElement.Changed), true, false); if (member != null) memberProvider.Register(AttachedBindingMember.CreateEvent<EntryElement>("ValueChanged", (info, element, arg3) => member.TryObserve(element, arg3))); BindingBuilderExtensions.RegisterDefaultBindingMember<StringElement>(nameof(StringElement.Value)); memberProvider.Register(AttachedBindingMember.CreateMember<StringElement, string>(nameof(StringElement.Value), (info, element) => element.Value, (info, element, arg3) => { element.Value = arg3; element.Reload(); })); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.StringElement.TappedEvent, (info, element, arg3) => { var weakWrapper = arg3.ToWeakWrapper(); IDisposable unsubscriber = null; Action action = () => { if (!weakWrapper.EventListener.TryHandle(weakWrapper.EventListener, EventArgs.Empty)) unsubscriber.Dispose(); }; unsubscriber = WeakActionToken.Create(element, action, (stringElement, nsAction) => stringElement.Tapped -= nsAction); element.Tapped += action; return unsubscriber; })); }
protected override bool LoadInternal() { #if NETFX_CORE IocContainer.BindToMethod <ILocalizationManager>((container, list) => { var manager = new LocalizationManagerExt(); manager.Initilaize(); return(manager); }, DependencyLifecycle.SingleInstance); #endif //Registering attached property IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; memberProvider.Register(AttachedBindingMember.CreateAutoProperty <TextBlock, string>("TextExt", TextExtMemberChanged, TextExtMemberAttached, TextExtGetDefaultValue)); memberProvider.Register(AttachedBindingMember.CreateMember <TextBlock, string>("FormattedText", GetFormattedTextValue, SetFormattedTextValue, ObserveFormattedTextValue)); return(true); }
protected override bool LoadInternal() { if (Mode != LoadMode.Design) { IocContainer.BindToConstant <IRepository>(new FileRepository()); } IBindingResourceResolver resourceResolver = BindingServiceProvider.ResourceResolver; IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider; //Registering tab template resource. resourceResolver.AddObject("tabTemplate", new BindingResourceObject(new ViewModelTabDataTemplate())); //Registering content manager to set content value in code-behind. resourceResolver.AddObject("editorContentManager", new BindingResourceObject(new WrapperContentManager())); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <Control, bool>("IsBusy", IsBusyChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty <Control, object>("BusyMessage", BusyMessageChanged)); return(true); }
protected virtual IObserver CreateObserver(object source, string path, bool ignoreContext, IBindingMemberProvider memberProvider = null, IBindingContextManager contextManager = null) { if (memberProvider != null) { BindingServiceProvider.MemberProvider = memberProvider; } if (contextManager != null) { BindingServiceProvider.ContextManager = contextManager; } var bindingPath = BindingPath.Create(path); if (bindingPath.IsEmpty) { return(new EmptyPathObserver(source, bindingPath)); } if (bindingPath.IsSingle) { return(new SinglePathObserver(source, bindingPath, ignoreContext)); } return(new MultiPathObserver(source, bindingPath, ignoreContext)); }
protected virtual IObserver CreateObserver(object source, string path, bool ignoreContext, IBindingMemberProvider memberProvider = null, IBindingContextManager contextManager = null, bool hasStablePath = false, bool observable = true, bool optional = false) { if (memberProvider != null) { BindingServiceProvider.MemberProvider = memberProvider; } if (contextManager != null) { BindingServiceProvider.ContextManager = contextManager; } var bindingPath = new BindingPath(path); if (bindingPath.IsEmpty) { return(new EmptyPathObserver(source, bindingPath)); } if (bindingPath.IsSingle) { return(new SinglePathObserver(source, bindingPath, ignoreContext, hasStablePath, observable, optional)); } return(new MultiPathObserver(source, bindingPath, ignoreContext, hasStablePath, observable, optional)); }
private static void RegisterMenuMembers(IBindingMemberProvider memberProvider) { //IMenu memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.Menu.ItemsSource, MenuItemsSourceChanged)); var menuEnabledMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.Menu.Enabled, (menu, args) => menu.SetGroupEnabled(0, args.NewValue.GetValueOrDefault())); memberProvider.Register(menuEnabledMember); memberProvider.Register("IsEnabled", menuEnabledMember); var menuVisibleMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.Menu.Visible, (menu, args) => menu.SetGroupVisible(0, args.NewValue.GetValueOrDefault())); memberProvider.Register(menuVisibleMember); memberProvider.Register("IsVisible", menuVisibleMember); //IMenuItem memberProvider.Register(AttachedBindingMember.CreateNotifiableMember(AttachedMembers.MenuItem.IsChecked, (info, item) => item.IsChecked, (info, item, value) => { if (value == item.IsChecked) return false; item.SetChecked(value); return true; })); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.MenuItem.Click, SetClickEventValue)); memberProvider.Register(AttachedBindingMember .CreateMember<IMenuItem, object>("AlphabeticShortcut", (info, item) => item.AlphabeticShortcut, (info, item, value) => { if (value is char) item.SetAlphabeticShortcut((char)value); else item.SetAlphabeticShortcut(value.ToStringSafe()[0]); })); memberProvider.Register(AttachedBindingMember .CreateMember(AttachedMembers.MenuItem.Icon, (info, item) => item.Icon, (info, item, value) => { if (value is int) item.SetIcon((int)value); else item.SetIcon((Drawable)value); })); memberProvider.Register(AttachedBindingMember .CreateMember<IMenuItem, bool>("IsCheckable", (info, item) => item.IsCheckable, (info, item, value) => item.SetCheckable(value))); var menuItemEnabled = AttachedBindingMember.CreateMember<IMenuItem, bool>(AttachedMemberConstants.Enabled, (info, item) => item.IsEnabled, (info, item, value) => item.SetEnabled(value)); memberProvider.Register(menuItemEnabled); memberProvider.Register("IsEnabled", menuItemEnabled); memberProvider.Register(AttachedBindingMember .CreateMember<IMenuItem, bool>("IsVisible", (info, item) => item.IsVisible, (info, item, value) => item.SetVisible(value))); memberProvider.Register(AttachedBindingMember .CreateMember<IMenuItem, object>("NumericShortcut", (info, item) => item.NumericShortcut, (info, item, value) => { if (value is char) item.SetNumericShortcut((char)value); else item.SetNumericShortcut(value.ToStringSafe()[0]); })); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.MenuItem.Title, (info, item) => item.TitleFormatted.ToStringSafe(), (info, item, value) => item.SetTitle(value))); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.MenuItem.TitleCondensed, (info, item) => item.TitleCondensedFormatted.ToStringSafe(), (info, item, value) => item.SetTitleCondensed(value))); }
private static void Register(IBindingMemberProvider memberProvider) { Should.NotBeNull(memberProvider, "memberProvider"); BindingBuilderExtensions.RegisterDefaultBindingMember<TextBlock>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember<TextBox>(() => t => t.Text); BindingBuilderExtensions.RegisterDefaultBindingMember<Button>("Click"); BindingBuilderExtensions.RegisterDefaultBindingMember<ComboBox>(() => c => c.ItemsSource); BindingBuilderExtensions.RegisterDefaultBindingMember<ListBox>(() => c => c.ItemsSource); BindingBuilderExtensions.RegisterDefaultBindingMember<ProgressBar>(() => c => c.Value); //UIElement memberProvider.Register(AttachedBindingMember.CreateMember<UIElement, bool>("Visible", (info, view) => view.Visibility == Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Visible : Visibility.Collapsed, ObserveVisiblityMember)); memberProvider.Register(AttachedBindingMember.CreateMember<UIElement, bool>("Hidden", (info, view) => view.Visibility != Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Collapsed : Visibility.Visible, ObserveVisiblityMember)); //FrameworkElement memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, object>(AttachedMemberConstants.ParentExplicit, GetParentValue, SetParentValue, ObserveParentMember)); memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); #if SILVERLIGHT || WINDOWSCOMMON || WINDOWS_PHONE memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => FocusManager.GetFocusedElement() == control, null, "LostFocus")); memberProvider.Register(AttachedBindingMember .CreateMember<Control, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value)); #else memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => control.IsFocused, null, "LostFocus")); memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value, "IsEnabledChanged")); #endif //TextBox #if WINDOWSCOMMON memberProvider.Register(AttachedBindingMember.CreateMember<TextBox, string>("Text", (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, "TextChanged")); //TextBlock memberProvider.Register(AttachedBindingMember.CreateMember<TextBlock, string>("Text", (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock)); #else //WebBrowser memberProvider.Register(AttachedBindingMember.CreateMember<WebBrowser, Uri>("Source", (info, browser) => browser.Source, (info, browser, arg3) => browser.Source = arg3, "Navigated")); #endif }
private static void Register(IBindingMemberProvider memberProvider) { BindingServiceProvider.ResourceResolver.AddType(typeof(UITextFieldViewMode)); RegisterTableViewMembers(memberProvider); RegisterCollectionViewMembers(memberProvider); RegisterDialogMembers(memberProvider); BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIBarButtonItem.ClickEvent); BindingBuilderExtensions.RegisterDefaultBindingMember<UISearchBar>(nameof(UISearchBar.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember<UISlider>(nameof(UISlider.Value)); BindingBuilderExtensions.RegisterDefaultBindingMember<UIProgressView>(nameof(UIProgressView.Progress)); //Object var itemsSourceMember = AttachedBindingMember.CreateAutoProperty<object, IEnumerable>(AttachedMemberConstants.ItemsSource, ObjectItemsSourceChanged); var defaultMemberRegistration = new DefaultAttachedMemberRegistration<IEnumerable>(itemsSourceMember); memberProvider.Register(defaultMemberRegistration.ToAttachedBindingMember<object>()); memberProvider.Register(AttachedBindingMember.CreateAutoProperty<object, ICollectionViewManager>(AttachedMembers.UIView.CollectionViewManager.Path)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty<object, IContentViewManager>(AttachedMembers.UIView.ContentViewManager.Path)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(ItemsSourceGeneratorBase.MemberDescriptor, (o, args) => { IEnumerable itemsSource = null; if (args.OldValue != null) { itemsSource = args.OldValue.ItemsSource; args.OldValue.SetItemsSource(null); } if (args.NewValue != null) args.NewValue.SetItemsSource(itemsSource); })); var itemTemplateMember = AttachedBindingMember.CreateAutoProperty<object, IDataTemplateSelector>(AttachedMemberConstants.ItemTemplateSelector); memberProvider.Register(itemTemplateMember); memberProvider.Register(typeof(object), AttachedMemberConstants.ItemTemplate, itemTemplateMember, true); //UIView memberProvider.Register(AttachedBindingMember.CreateMember<UIView, object>(AttachedMemberConstants.Parent, (info, view) => ParentObserver.GetOrAdd(view).Parent, (info, view, arg3) => ParentObserver.GetOrAdd(view).Parent = arg3, (info, view, arg3) => ParentObserver.GetOrAdd(view).AddWithUnsubscriber(arg3))); memberProvider.Register(AttachedBindingMember.CreateMember<UIView, object>(AttachedMemberConstants.FindByNameMethod, FindViewByName)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.Content, ContentChanged)); var member = AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ContentTemplateSelector, ContentTemplateChanged); memberProvider.Register(member); memberProvider.Register(typeof(UIView), AttachedMemberConstants.ContentTemplate, member, true); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIView.Visible, (info, view) => !view.Hidden, (info, view, arg3) => view.Hidden = !arg3)); //UISegmentedControl BindingBuilderExtensions.RegisterDefaultBindingMember<UISegmentedControl>(nameof(UISegmentedControl.SelectedSegment)); memberProvider.Register(AttachedBindingMember.CreateMember<UISegmentedControl, int>(nameof(UISegmentedControl.SelectedSegment), (info, control) => (int)control.SelectedSegment, (info, control, arg3) => control.SelectedSegment = arg3, nameof(UISegmentedControl.ValueChanged))); //UIButton BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIControl.ClickEvent.Override<UIButton>()); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIButton.Title, (info, button) => button.CurrentTitle, (info, button, arg3) => button.SetTitle(arg3, button.State))); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIButton.State, (info, button) => button.State, (info, button, arg3) => button.SetTitle(button.CurrentTitle, arg3))); //UIDatePicker BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIDatePicker.Date); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIDatePicker.Date, (info, picker) => NSDateToDateTime(picker.Date), (info, picker, arg3) => picker.Date = DateTimeToNSDate(arg3), nameof(UIDatePicker.ValueChanged))); //UISwitch BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UISwitch.On); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UISwitch.On, (info, picker) => picker.On, (info, picker, arg3) => picker.On = arg3, nameof(UISwitch.ValueChanged))); //UIControl var clickMember = memberProvider.GetBindingMember(typeof(UIControl), nameof(UIControl.TouchUpInside), true, false); if (clickMember != null) memberProvider.Register(typeof(UIControl), "Click", clickMember, true); //UITextField BindingBuilderExtensions.RegisterDefaultBindingMember<UITextField>(nameof(UITextField.Text)); NSNotificationCenter.DefaultCenter.AddObserver(UITextField.TextFieldTextDidChangeNotification, TextDidChangeNotification); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITextField.TextChangedEvent, SetTextFieldTextChanged)); //UITextView BindingBuilderExtensions.RegisterDefaultBindingMember<UITextView>(nameof(UITextView.Text)); NSNotificationCenter.DefaultCenter.AddObserver(UITextView.TextDidChangeNotification, TextDidChangeNotification); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITextView.TextChangedEvent, SetTextFieldTextChanged)); //UILabel BindingBuilderExtensions.RegisterDefaultBindingMember<UILabel>(nameof(UILabel.Text)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UILabel.TextSizeToFit, (info, label) => label.Text, (info, label, arg3) => { label.Text = arg3; label.SizeToFit(); })); //UIViewController BindingServiceProvider.BindingMemberPriorities["ToolbarItemTemplate"] = BindingServiceProvider.TemplateMemberPriority; BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UIViewController.ToolbarItemTemplateSelector] = BindingServiceProvider.TemplateMemberPriority; memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIViewController.ToastTemplateSelector)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIViewController.ToolbarItemsSource, ToolbarItemsSourceChanged)); var templateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIViewController.ToolbarItemTemplateSelector); memberProvider.Register(templateMember); memberProvider.Register(typeof(UIViewController), "ToolbarItemTemplate", templateMember, true); memberProvider.Register(AttachedBindingMember.CreateMember<UIViewController, string>(nameof(UIViewController.Title), (info, controller) => controller.Title, (info, controller, arg3) => controller.Title = arg3 ?? string.Empty)); memberProvider.Register(AttachedBindingMember.CreateMember<UIViewController, object>(AttachedMemberConstants.ParentExplicit, (info, controller) => controller.ParentViewController ?? controller.PresentingViewController ?? controller.SplitViewController, null)); //UITabBarController BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UITabBarController.ItemsSource); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITabBarController.SelectedItem, TabBarSelectedItemChanged, TabBarSelectedItemAttached)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITabBarController.ItemsSource, TabBarItemsSourceChanged)); //UISplitViewController memberProvider.Register(AttachedBindingMember.CreateNotifiableMember(AttachedMembers.UISplitViewController.MasterView, (info, controller) => { if (controller.ViewControllers.Length == 2) return controller.ViewControllers[0]; return null; }, (info, controller, arg3) => { UpdateMasterDetailController(controller, arg3, true); return true; })); memberProvider.Register(AttachedBindingMember.CreateNotifiableMember(AttachedMembers.UISplitViewController.DetailView, (info, controller) => { if (controller.ViewControllers.Length == 2) return controller.ViewControllers[1]; return null; }, (info, controller, arg3) => { UpdateMasterDetailController(controller, arg3, false); return true; })); //UIToolbar BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIView.ItemsSource.Override<UIToolbar>()); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ItemsSource.Override<UIToolbar>(), ToolbarItemsSourceChanged)); //UIPickerView BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIView.ItemsSource.Override<UIPickerView>()); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ItemsSource.Override<UIPickerView>(), PickerViewItemsSourceChanged)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIPickerView.DisplayMemberPath, PickerViewDisplayMemberPathChangedChanged)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIPickerView.SelectedItem, (info, view) => GetOrAddPickerViewModel(view).SelectedItem, (info, view, arg3) => GetOrAddPickerViewModel(view).SelectedItem = arg3, (info, view, arg3) => { var viewModel = GetOrAddPickerViewModel(view); return BindingServiceProvider.WeakEventManager.TrySubscribe(viewModel, nameof(MvvmPickerViewModel.SelectedItemChanged), arg3); })); }
protected virtual IObserver CreateObserver(object source, string path, bool ignoreContext, IBindingMemberProvider memberProvider = null, IBindingContextManager contextManager = null, bool hasStablePath = false, bool observable = true, bool optional = false) { if (memberProvider != null) BindingServiceProvider.MemberProvider = memberProvider; if (contextManager != null) BindingServiceProvider.ContextManager = contextManager; var bindingPath = new BindingPath(path); if (bindingPath.IsEmpty) return new EmptyPathObserver(source, bindingPath); if (bindingPath.IsSingle) return new SinglePathObserver(source, bindingPath, ignoreContext, hasStablePath, observable, optional); return new MultiPathObserver(source, bindingPath, ignoreContext, hasStablePath, observable, optional); }
private static void RegisterViewMembers(IBindingMemberProvider memberProvider) { //View memberProvider.Register(AttachedBindingMember.CreateMember<View, object>(AttachedMemberConstants.FindByNameMethod, ViewFindByNameMember)); memberProvider.Register(AttachedBindingMember.CreateMember<View, object>(AttachedMemberConstants.ParentExplicit, GetViewParentValue, null, ObserveViewParent)); memberProvider.Register(AttachedBindingMember.CreateMember<View, bool>(AttachedMemberConstants.Focused, (info, view) => view.IsFocused, (info, view, arg3) => { if (arg3) view.RequestFocus(); else view.ClearFocus(); }, "FocusChange")); memberProvider.Register(AttachedBindingMember.CreateMember<View, bool>(AttachedMemberConstants.Enabled, (info, view) => view.Enabled, (info, view, value) => view.Enabled = value)); memberProvider.Register(AttachedBindingMember.CreateMember<View, ViewStates>("Visibility", (info, view) => view.Visibility, (info, view, value) => view.Visibility = value, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.View.Visible, (info, view) => view.Visibility == ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Visible : ViewStates.Gone, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.View.Hidden, (info, view) => view.Visibility != ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Gone : ViewStates.Visible, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty<View, object>(AttachedMembers.Toolbar.MenuTemplate.Path)); }
private static void RegisterTableViewMembers(IBindingMemberProvider memberProvider) { BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewRowAnimation)); BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewScrollPosition)); BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellEditingStyle)); BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellAccessory)); BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellSelectionStyle)); BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellSeparatorStyle)); BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellStyle)); BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.UseAnimations] = 2; BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.AddAnimation] = 2; BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.RemoveAnimation] = 2; BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.ReplaceAnimation] = 2; BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.ScrollPosition] = 2; BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.CellBind] = 2; //UITableView BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIView.ItemsSource.Override<UITableView>()); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.ReadOnly)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.CellBind)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.AddAnimation)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.RemoveAnimation)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.ReplaceAnimation)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.ScrollPosition)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.CellStyle)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.UseAnimations)); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITableView.SelectedItemChangedEvent)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ItemsSource.Override<UITableView>(), TableViewItemsSourceChanged)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UITableView.SelectedItem, GetTableViewSelectedItem, SetTableViewSelectedItem, (info, view, arg3) => (IDisposable)view.SetBindingMemberValue(AttachedMembers.UITableView.SelectedItemChangedEvent, arg3))); var itemTemplateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.ItemTemplateSelector); memberProvider.Register(itemTemplateMember); memberProvider.Register(typeof(UITableView), AttachedMemberConstants.ItemTemplate, itemTemplateMember, true); //UITableViewCell BindingBuilderExtensions.RegisterDefaultBindingMember<UITableViewCell>(() => c => c.TextLabel.Text); var member = AttachedBindingMember.CreateEvent(AttachedMembers.UITableViewCell.AccessoryButtonTappedEvent); memberProvider.Register(member); memberProvider.Register("Click", member); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITableViewCell.DeleteClickEvent)); memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITableViewCell.InsertClickEvent)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableViewCell.Moveable)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableViewCell.TitleForDeleteConfirmation)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableViewCell.EditingStyle)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableViewCell.ShouldHighlight)); memberProvider.Register(AttachedBindingMember.CreateNotifiableMember( AttachedMembers.UITableViewCell.Selected, (info, cell) => { if (TableViewSourceBase.HasMask(cell, TableViewSourceBase.InitializingStateMask)) return null; var cellBindable = cell as UITableViewCellBindable; if (cellBindable == null) return cell.Selected; return cellBindable.SelectedBind.GetValueOrDefault(); }, (info, cell, arg3) => { var cellBindable = cell as UITableViewCellBindable; if (cellBindable == null) cell.Selected = arg3.GetValueOrDefault(); else cellBindable.SelectedBind = arg3; return true; })); memberProvider.Register(AttachedBindingMember.CreateNotifiableMember( AttachedMembers.UITableViewCell.Highlighted, (info, cell) => cell.Highlighted, (info, cell, arg3) => { if (cell.Highlighted == arg3) return false; cell.Highlighted = arg3; return true; })); memberProvider.Register(AttachedBindingMember.CreateNotifiableMember( AttachedMembers.UITableViewCell.Editing, (info, cell) => cell.Editing, (info, cell, arg3) => { if (cell.Editing == arg3) return false; cell.Editing = arg3; return true; })); }
private static void Register(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember<TextBlock>(nameof(TextBlock.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember<TextBox>(nameof(TextBox.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember<Button>(nameof(Button.Click)); BindingBuilderExtensions.RegisterDefaultBindingMember<ComboBox>(nameof(ComboBox.ItemsSource)); BindingBuilderExtensions.RegisterDefaultBindingMember<ListBox>(nameof(ListBox.ItemsSource)); BindingBuilderExtensions.RegisterDefaultBindingMember<ProgressBar>(nameof(ProgressBar.Value)); //UIElement memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIElement.Visible, (info, view) => view.Visibility == Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Visible : Visibility.Collapsed, ObserveVisiblityMember)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIElement.Hidden, (info, view) => view.Visibility != Visibility.Visible, (info, view, value) => view.Visibility = value ? Visibility.Collapsed : Visibility.Visible, ObserveVisiblityMember)); //FrameworkElement memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, object>(AttachedMemberConstants.Parent, GetParentValue, SetParentValue, ObserveParentMember)); memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl)); #if SILVERLIGHT || WINDOWSCOMMON || WINDOWS_PHONE memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => FocusManager.GetFocusedElement() == control, null, nameof(FrameworkElement.LostFocus))); memberProvider.Register(AttachedBindingMember .CreateMember<Control, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value)); #else memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, bool>(AttachedMemberConstants.Focused, (info, control) => control.IsFocused, null, nameof(FrameworkElement.LostFocus))); memberProvider.Register(AttachedBindingMember .CreateMember<FrameworkElement, bool>(AttachedMemberConstants.Enabled, (info, control) => control.IsEnabled, (info, control, value) => control.IsEnabled = value, nameof(FrameworkElement.IsEnabledChanged))); #endif //TextBox #if WINDOWSCOMMON memberProvider.Register(AttachedBindingMember.CreateMember<TextBox, string>(nameof(TextBox.Text), (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, nameof(TextBox.TextChanged))); //TextBlock memberProvider.Register(AttachedBindingMember.CreateMember<TextBlock, string>(nameof(TextBlock.Text), (info, box) => box.Text, (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock)); #else //WebBrowser #if SILVERLIGHT memberProvider.Register(AttachedBindingMember.CreateMember<WebBrowser, Uri>(nameof(WebBrowser), (info, browser) => browser.Source, (info, browser, arg3) => browser.Source = arg3)); #else memberProvider.Register(AttachedBindingMember.CreateMember<WebBrowser, Uri>(nameof(WebBrowser), (info, browser) => browser.Source, (info, browser, arg3) => browser.Source = arg3, nameof(WebBrowser.Navigated))); #endif #endif }
private static void Register(IBindingMemberProvider memberProvider) { BindingBuilderExtensions.RegisterDefaultBindingMember<Button>(nameof(Button.Click)); BindingBuilderExtensions.RegisterDefaultBindingMember<TextBox>(nameof(TextBox.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember<Label>(nameof(Label.Text)); BindingBuilderExtensions.RegisterDefaultBindingMember<CheckBox>(nameof(CheckBox.Checked)); BindingBuilderExtensions.RegisterDefaultBindingMember<ProgressBar>(nameof(ProgressBar.Value)); //Object var itemsSourceMember = AttachedBindingMember.CreateAutoProperty<object, IEnumerable>(AttachedMemberConstants.ItemsSource, ObjectItemsSourceChanged); var defaultMemberRegistration = new DefaultAttachedMemberRegistration<IEnumerable>(itemsSourceMember); memberProvider.Register(defaultMemberRegistration.ToAttachedBindingMember<object>()); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.Object.CollectionViewManager)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty<object, IContentViewManager>(AttachedMembers.Control.ContentViewManager.Path)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(ItemsSourceGeneratorBase.MemberDescriptor, (o, args) => { IEnumerable itemsSource = null; if (args.OldValue != null) { itemsSource = args.OldValue.ItemsSource; args.OldValue.SetItemsSource(null); } if (args.NewValue != null) args.NewValue.SetItemsSource(itemsSource); })); var itemTemplateMember = AttachedBindingMember.CreateAutoProperty<object, IDataTemplateSelector>(AttachedMemberConstants.ItemTemplateSelector); memberProvider.Register(itemTemplateMember); memberProvider.Register(typeof(object), AttachedMemberConstants.ItemTemplate, itemTemplateMember, true); //Form memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.Form.ToastTemplateSelector)); //Control var sizeChanged = memberProvider.GetBindingMember(typeof(Control), nameof(Control.SizeChanged), true, false); if (sizeChanged != null) { memberProvider.Register(typeof(Control), "WidthChanged", sizeChanged, true); memberProvider.Register(typeof(Control), "HeightChanged", sizeChanged, true); } memberProvider.Register(AttachedBindingMember .CreateMember<Control, object>(AttachedMemberConstants.FindByNameMethod, FindByNameControlMember)); memberProvider.Register(AttachedBindingMember .CreateMember<Control, bool>(AttachedMemberConstants.Focused, (info, control) => control.Focused, (info, control, arg3) => { if (arg3) control.Focus(); }, nameof(Control.LostFocus))); memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.Control.Content, ContentChanged)); var contenMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.Control.ContentTemplateSelector, ContentTemplateChanged); memberProvider.Register(contenMember); memberProvider.Register(typeof(Control), AttachedMemberConstants.ContentTemplate, contenMember, true); //DateTimePicker BindingBuilderExtensions.RegisterDefaultBindingMember<DateTimePicker>(nameof(DateTimePicker.Value)); memberProvider.Register(AttachedBindingMember.CreateMember<DateTimePicker, DateTime>(nameof(DateTimePicker.Value), (info, picker) => picker.Value, (info, picker, value) => { if (value < picker.MinDate) picker.Value = picker.MinDate; else if (value > picker.MaxDate) picker.Value = picker.MaxDate; else picker.Value = value; }, nameof(DateTimePicker.ValueChanged))); //ToolStripItem BindingBuilderExtensions.RegisterDefaultBindingMember<ToolStripButton>(nameof(ToolStripButton.Click)); BindingBuilderExtensions.RegisterDefaultBindingMember<ToolStripMenuItem>(nameof(ToolStripMenuItem.Click)); BindingBuilderExtensions.RegisterDefaultBindingMember<ToolStripItem>(nameof(ToolStripItem.Text)); memberProvider.Register(AttachedBindingMember.CreateMember<ToolStripItem, object>(AttachedMemberConstants.ParentExplicit, GetParentToolStripItem, null, ObserveParentMemberToolStripItem)); memberProvider.Register(AttachedBindingMember.CreateMember<ToolStripItem, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberToolStripItem)); //TabControl BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Object.ItemsSource.Override<TabControl>()); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.TabControl.SelectedItem, GetSelectedItemTabControl, SetSelectedItemTabControl, nameof(TabControl.Selected))); //ComboBox BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Object.ItemsSource.Override<ComboBox>()); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.Object.ItemsSource.Override<ComboBox>(), (info, box) => box.DataSource as IEnumerable, (info, box, value) => box.DataSource = value, nameof(ComboBox.DataSourceChanged))); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.ComboBox.SelectedItem, (info, box) => box.SelectedItem, (info, box, value) => box.SelectedItem = value, nameof(ComboBox.SelectedIndexChanged))); //DataGridView BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Object.ItemsSource.Override<DataGridView>()); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.Object.ItemsSource.Override<DataGridView>(), (info, view) => view.DataSource as IEnumerable, (info, view, value) => { view.DataSource = value; view.Refresh(); }, nameof(DataGridView.DataSourceChanged))); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.DataGridView.SelectedItem, GetSelectedItemDataGridView, SetSelectedItemDataGridView, (info, view, arg3) => { arg3 = arg3.ToWeakEventListener(); EventHandler handler = null; handler = (sender, args) => { var gridView = (DataGridView)sender; Action<DataGridView, IEventListener, EventHandler> action = (dataGridView, listener, eventHandler) => { if (!listener.TryHandle(dataGridView, EventArgs.Empty)) dataGridView.CurrentCellChanged -= eventHandler; }; //To prevent this exception 'Operation not valid because it results in a reentrant call to the SetCurrentCellAddressCore function' gridView.BeginInvoke(action, gridView, arg3, handler); }; view.CurrentCellChanged += handler; return WeakActionToken.Create(view, handler, (gridView, eventHandler) => gridView.CurrentCellChanged -= eventHandler); })); }
private static void RegisterViewMembers(IBindingMemberProvider memberProvider) { //View memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.View.Fragment)); memberProvider.Register(AttachedBindingMember.CreateMember<View, object>(AttachedMemberConstants.FindByNameMethod, ViewFindByNameMember)); memberProvider.Register(AttachedBindingMember.CreateMember<View, object>(AttachedMemberConstants.Parent, GetViewParentValue, SetViewParentValue, ObserveViewParent)); memberProvider.Register(AttachedBindingMember.CreateMember<View, bool>(AttachedMemberConstants.Focused, (info, view) => view.IsFocused, (info, view, arg3) => { if (arg3) view.RequestFocus(); else view.ClearFocus(); }, nameof(View.FocusChange))); memberProvider.Register(AttachedBindingMember.CreateMember<View, bool>(AttachedMemberConstants.Enabled, (info, view) => view.Enabled, (info, view, value) => view.Enabled = value)); memberProvider.Register(AttachedBindingMember.CreateMember<View, ViewStates>(nameof(View.Visibility), (info, view) => view.Visibility, (info, view, value) => view.Visibility = value, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.View.Visible, (info, view) => view.Visibility == ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Visible : ViewStates.Gone, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.View.Hidden, (info, view) => view.Visibility != ViewStates.Visible, (info, view, value) => view.Visibility = value ? ViewStates.Gone : ViewStates.Visible, ObserveViewVisibility)); memberProvider.Register(AttachedBindingMember.CreateAutoProperty<View, object>(AttachedMembers.Toolbar.MenuTemplate.Path)); memberProvider.Register(AttachedBindingMember.CreateEvent<View>("WidthChanged", (info, o, arg3) => new SizeObserver(o, arg3))); memberProvider.Register(AttachedBindingMember.CreateEvent<View>("HeightChanged", (info, o, arg3) => new SizeObserver(o, arg3))); }
protected virtual IObserver CreateObserver(object source, string path, bool ignoreContext, IBindingMemberProvider memberProvider = null, IBindingContextManager contextManager = null) { if (memberProvider != null) BindingServiceProvider.MemberProvider = memberProvider; if (contextManager != null) BindingServiceProvider.ContextManager = contextManager; var bindingPath = BindingPath.Create(path); if (bindingPath.IsEmpty) return new EmptyPathObserver(source, bindingPath); if (bindingPath.IsSingle) return new SinglePathObserver(source, bindingPath, ignoreContext); return new MultiPathObserver(source, bindingPath, ignoreContext); }