refactor: use MultiBinding instead of code to control visibility of Commit & Push button

This commit is contained in:
leo 2024-12-11 16:08:23 +08:00
parent a10f9e0dd0
commit 9dd4166009
No known key found for this signature in database
2 changed files with 10 additions and 13 deletions

View file

@ -29,11 +29,7 @@ namespace SourceGit.ViewModels
public bool CanCommitWithPush
{
get => _canCommitWithPush;
set
{
if (SetProperty(ref _canCommitWithPush, value))
OnPropertyChanged(nameof(IsCommitWithPushVisible));
}
set => SetProperty(ref _canCommitWithPush, value);
}
public bool HasUnsolvedConflicts
@ -89,16 +85,10 @@ namespace SourceGit.ViewModels
Staged = GetStagedChanges();
SelectedStaged = [];
OnPropertyChanged(nameof(IsCommitWithPushVisible));
}
}
}
public bool IsCommitWithPushVisible
{
get => !UseAmend && CanCommitWithPush;
}
public List<Models.Change> Unstaged
{
get => _unstaged;

View file

@ -355,8 +355,15 @@
HotKey="Alt+Enter"
ToolTip.Tip="{OnPlatform Alt+Enter, macOS=⌥+Enter}"
ToolTip.Placement="Top"
ToolTip.VerticalOffset="0"
IsVisible="{Binding IsCommitWithPushVisible}"/>
ToolTip.VerticalOffset="0">
<Button.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="UseAmend" Converter="{x:Static BoolConverters.Not}"/>
<Binding Path="CanCommitWithPush"/>
<Binding Path="InProgressContext" Converter="{x:Static ObjectConverters.IsNull}"/>
</MultiBinding>
</Button.IsVisible>
</Button>
</Grid>
</Grid>
</Grid>