CommunityToolkit.Mvvm Relaycommand с параметром перечислимого типа

Есть ли способ передать перечисление в качестве параметра команде CommunityToolkit.Mvvm Relay?

Я пытался начать использовать CommunityToolkit.Mvvm, но довольно быстро застрял, так как не уверен, почему моя команда отключает кнопку.

Для отладки я удалил свойство, которое оценивает, может ли команда быть выполнена или нет, и я также попытался просто дать ему свойство, которое всегда возвращает true, оба из которых должны привести к включению кнопки.

      <Button x:Name="SquareButton" Command="{Binding UpdateStateCommand}" 
        CommandParameter="{Binding ElementName=ItemsControl, Path=DataContext.CurrentPlayer}">
    <Button.Content>
        <Viewbox>
            <TextBlock Text="{Binding State, Converter={StaticResource stateconverter}}"/>
        </Viewbox>
    </Button.Content>
</Button>
      [ObservableProperty]
private SquareState _state = SquareState.Empty; // The enum

public TicTacToeSquareViewModel() { }

[RelayCommand]
private void UpdateState(SquareState state) => State = state;

Кнопка является ItemTemplateItemsControl, DataContext которого является доской крестики-нолики.

Когда я нажал кнопку, состояние нажатого квадрата должно быть текущим игроком, который является свойством на доске.

Однако единственное решение, которое я придумал, заключалось в том, чтобы передать в UpdateState всю доску, а не только текущего игрока, что я считаю далеко не идеальным.

      [RelayCommand]
private void UpdateState(TicTacToeBoardViewModel board) => State = board.CurrentPlayer;

0 ответов

Другие вопросы по тегам