В настоящее время я делаю программу, в которой я хочу иметь несколько флажков и несколько кнопок, где каждая кнопка привязана к одному флажку.Когда флажок включен, он должен скрывать определенную кнопку.
На данный момент я могу сделать это для одной кнопки:
<CheckBox Name="cbxIsClosableForUser"
DataContext="{StaticResource GeneralVM}"
Command="{Binding BtnToggleLblVisibilityDelegateCommand, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
CommandParameter="{Binding LblVisibilityCloseButton}"
Content="{m:Translate ClosingAvailableForUser}"
Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3"
Margin="6,0,0,0"
HorizontalAlignment="Left" VerticalAlignment="Center" />
В другом представлении есть кнопки:
<Button DataContext="{StaticResource GeneralVM}"
Visibility="{Binding LblVisibilityCloseButton, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource NewButtonStyle}"
Grid.Column="3"
Grid.Row="3"
PreviewMouseDown="ImQuit_PreviewMouseDown"
HorizontalAlignment="Right"
VerticalAlignment="Bottom" >
<Image Name="imQuit"
Source="/CWI;component/Images/quit.png"
Stretch="None"/>
</Button>
Вот код в ViewModel:
public Visibility LblVisibilityCloseButton
{
get => _LblVisibilityCloseButton;
set
{
OnPropertyChanged(nameof(LblVisibilityCloseButton));
_LblVisibilityCloseButton = value;
}
}
private Visibility _LblVisibilityCloseButton;
public GeneralViewModel()
{
LblVisibilityCloseButton = Visibility.Visible;
BtnToggleLblVisibilityDelegateCommand = new DelegateCommand<object>(ToggleVisibility);
}
public DelegateCommand<object> BtnToggleLblVisibilityDelegateCommand { get; set; }
private void ToggleVisibility(object obj)
{
if (LblVisibilityCloseButton == Visibility.Visible)
{
LblVisibilityCloseButton = Visibility.Hidden;
}
else
{
LblVisibilityCloseButton = Visibility.Visible;
}
}
Теперь дело в том, что этот флажок работает идеально.Но я хочу, чтобы несколько других флажков вызывали одну и ту же команду, не повторяя себя, и добавили 5 других операторов if для 5 дополнительных кнопок.
Редактировать: я использую MVVM, я не хочу код, стоящий за вещами для каждого отдельного флажка.