Я работаю над созданием простой игры в крестики-нолики, чтобы познакомиться с WPF из-за количества времени, которое прошло с тех пор, как я использовал этот формат. Я пытался отключить кнопку, чтобы люди не могли выбрать один и тот же квадрат после того, как контент был установлен на X или O. Вот пример моего кода XAML для кнопок:
<Button Name="btmRight" Margin="10 10 10 10" Grid.Column="2" Grid.Row="2" FontSize="128">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="1"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="LightGray"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Кнопки включены по умолчанию. Затем я использую некоторый простой код C #, чтобы отключить кнопку, и устанавливаю содержимое в X или O в зависимости от хода. Однако, несмотря на то, что триггер стиля находится в каждой кнопке, формат никогда не изменяется. Что-то, что я мог бы исследовать, - это вставить в код условное условие: ничего не менять с помощью кнопок, если у них есть содержимое, а не отключать кнопку при ее нажатии. Вот пример того, что я использую для C #:
mid.Click += (sender, e) =>
{
mid.Content = mark;
TurnSwap();
mid.IsEnabled = false;
IsComplete();
};
«Метка» - это строка, которая устанавливается в зависимости от хода. Контенту присваивается значение метки, которое затем вращается сразу после того, как контент установлен. Затем кнопка отключается, и игра проверяет, выиграл ли кто-то еще. Если бы мне пришлось воспользоваться возможностью ручного отключения кнопки, я бы поместил этот код C # в условное выражение, чтобы проверить, является ли content = "", что по умолчанию. Я чувствую, что этот вариант немного ленив, и я хотел бы изучить решение WPF только для концепций.