diff --git a/src/GitHub.VisualStudio/UI/Views/Controls/RepositoryPublishControl.xaml.cs b/src/GitHub.VisualStudio/UI/Views/Controls/RepositoryPublishControl.xaml.cs index 3c2334be33..69c641fcd9 100644 --- a/src/GitHub.VisualStudio/UI/Views/Controls/RepositoryPublishControl.xaml.cs +++ b/src/GitHub.VisualStudio/UI/Views/Controls/RepositoryPublishControl.xaml.cs @@ -30,7 +30,33 @@ public RepositoryPublishControl() d(this.Bind(ViewModel, vm => vm.RepositoryName, v => v.nameText.Text)); d(this.Bind(ViewModel, vm => vm.Description, v => v.description.Text)); - d(this.Bind(ViewModel, vm => vm.KeepPrivate, v => v.makePrivate.IsChecked)); + + d(this.WhenAnyValue(x => x.ViewModel.KeepPrivate) + .Subscribe(keepPrivate => + { + // because we removed this.Bind, set this by hand + if (keepPrivate != makePrivate.IsChecked) + { + makePrivate.IsChecked = keepPrivate; + } + })); + + // BEGIN DANGER ZONE + // + // This replaces the default Bind behaviour as the Checkbox control + // does not raise an event here when it is hosted in the Team Explorer + // view. + // + // We've used this.Bind in other places (popups) so it's something + // we need to investigate further + // + d(Observable.FromEventPattern(makePrivate, "Checked") + .Subscribe(_ => ViewModel.KeepPrivate = true)); + d(Observable.FromEventPattern(makePrivate, "Unchecked") + .Subscribe(_ => ViewModel.KeepPrivate = false)); + // END DANGER ZONE + + d(this.OneWayBind(ViewModel, vm => vm.CanKeepPrivate, v => v.makePrivate.IsEnabled)); //d(this.OneWayBind(ViewModel, vm => vm.ShowUpgradeToMicroPlanWarning, v => v.upgradeToMicroPlanWarning.Visibility));