Ответ 1
Один из способов - отсоединить обработчик событий, установить свойство IsChecked
, а затем снова подключить его.
myCheckbox.Checked -= myCheckbox_Checked;
myCheckbox.IsChecked = true;
myCheckbox.Checked += myCheckbox_Checked;
Есть ли способ проверить CheckBox
без запуска кода, связанного с его проверкой? Просто для визуального внешнего вида.
Edit:
private void normalCheck_Checked(object sender, RoutedEventArgs e)
{
normal();
}
Представьте, что я хочу установить normalCheckBox.IsChecked=true;
, но не увеличивая событие. Возможно ли это?
Один из способов - отсоединить обработчик событий, установить свойство IsChecked
, а затем снова подключить его.
myCheckbox.Checked -= myCheckbox_Checked;
myCheckbox.IsChecked = true;
myCheckbox.Checked += myCheckbox_Checked;
Вы можете использовать событие Click
вместо Checked
и использовать состояние флажка, как показано ниже:
private void normalCheck_Click(object sender, RoutedEventArgs e)
{
if ((bool)normalCheck.IsChecked) { normal(); }
}
ПРИМЕЧАНИЕ. Часть (bool)
необходима, поскольку IsChecked
возвращает тип bool?
, который может быть нулевым.
Это событие не будет поднято с помощью normalCheck.IsChecked = true;
Он будет поднят только щелчком.
Если вы ссылаетесь на изменение статуса проверки без повышения события "_Checked", вам, вероятно, придется переопределить обработчик события с параметром, чтобы сообщить ему пропустить событие или нет.
Связанный ответ: Измените значение флажка без повышения события