Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 75472b4

Browse files
authored
Merge pull request #679 from github/fixes/clone-dialog-selection
Don't use RxUI for Repositories binding.
2 parents 718830a + a26703d commit 75472b4

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/GitHub.VisualStudio/UI/Views/Controls/RepositoryCloneControl.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@
243243
<Grid Margin="0">
244244
<ListBox x:Name="repositoryList"
245245
HorizontalContentAlignment="Stretch"
246-
ItemsSource="{Binding Repositories}"
246+
ItemsSource="{Binding Path=RepositoriesView, RelativeSource={RelativeSource AncestorType={x:Type local:GenericRepositoryCloneControl}}}"
247247
SelectedItem="{Binding SelectedRepository}"
248248
Style="{DynamicResource LightListBox}">
249249
<ListBox.GroupStyle>

src/GitHub.VisualStudio/UI/Views/Controls/RepositoryCloneControl.xaml.cs

+21-1
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,45 @@ public partial class RepositoryCloneControl : GenericRepositoryCloneControl
3333
{
3434
readonly Dictionary<string, RepositoryGroup> groups = new Dictionary<string, RepositoryGroup>();
3535

36+
static readonly DependencyPropertyKey RepositoriesViewPropertyKey =
37+
DependencyProperty.RegisterReadOnly(
38+
nameof(RepositoriesView),
39+
typeof(ICollectionView),
40+
typeof(RepositoryCloneControl),
41+
new PropertyMetadata(null));
42+
43+
public static readonly DependencyProperty RepositoriesViewProperty = RepositoriesViewPropertyKey.DependencyProperty;
44+
3645
public RepositoryCloneControl()
3746
{
3847
InitializeComponent();
3948

4049
this.WhenActivated(d =>
4150
{
42-
d(this.OneWayBind(ViewModel, vm => vm.Repositories, v => v.repositoryList.ItemsSource, CreateRepositoryListCollectionView));
4351
d(repositoryList.Events().MouseDoubleClick.InvokeCommand(this, x => x.ViewModel.CloneCommand));
4452
d(ViewModel.CloneCommand.Subscribe(_ => NotifyDone()));
4553
});
54+
4655
IsVisibleChanged += (s, e) =>
4756
{
4857
if (IsVisible)
4958
this.TryMoveFocus(FocusNavigationDirection.First).Subscribe();
5059
};
60+
61+
this.WhenAnyValue(x => x.ViewModel.Repositories, CreateRepositoryListCollectionView).Subscribe(x => RepositoriesView = x);
62+
}
63+
64+
public ICollectionView RepositoriesView
65+
{
66+
get { return (ICollectionView)GetValue(RepositoriesViewProperty); }
67+
private set { SetValue(RepositoriesViewPropertyKey, value); }
5168
}
5269

5370
ListCollectionView CreateRepositoryListCollectionView(IEnumerable<IRepositoryModel> repositories)
5471
{
72+
if (repositories == null)
73+
return null;
74+
5575
var view = new ListCollectionView((IList)repositories);
5676
Debug.Assert(view.GroupDescriptions != null, "view.GroupDescriptions is null");
5777
view.GroupDescriptions.Add(new RepositoryGroupDescription(this));

0 commit comments

Comments
 (0)