public static UIBarButtonItem CreateButtonForToolbar(this ToolBarButton toolBarButton) { if (toolBarButton.ImageSource == null) return toolBarButton.CreateButton(); var uiButton = new UIButton(UIButtonType.Custom); SetImage(uiButton, toolBarButton.ImageSource); uiButton.Frame = new CGRect (0, 0, 24, 24); var barButtonItem = new UIBarButtonItem (uiButton); uiButton.TouchUpInside += (sender, e) => HandleButtonClick(toolBarButton); WireUpEnabledToCanExecute(toolBarButton, barButtonItem); toolBarButton.PropertyChanged += (s, e) => { if (e.PropertyNameMatches(() => toolBarButton.Command)) barButtonItem.InvokeOnMainThread(() => WireUpEnabledToCanExecute(toolBarButton, barButtonItem)); }; return barButtonItem; }