Вы можете просто добавить флаг, который вы затем установите, чтобы избежать обработки события:
private bool _checkedFromCode = false;
private void CheckboxChecked(object sender, RoutedEventArgs e)
{
if ( !_checkedFromCode )
{
//your logic
}
}
Теперь при установке IsChecked
из кода:
_checkedFromCode = true;
checkBoxExample.IsChecked = true;
_checkedFromCode = false;
Событие будетвсе еще запускается, но вы можете ограничить обработку только тогда, когда она фактически происходит от взаимодействия с пользователем.
В качестве альтернативы, вы можете создать собственную производную версию CheckBox
, которая будет иметь пользовательское событие только для этого сценария.
RE: Tapped
событие : предлагаемое решение с событием Tapped
не будет работать, так как вы не должны предполагать, что пользователь использует касание, мышь или пероWindows 10 работает с любым типом ввода, поэтому единственным надежным событием является событие Checked
.Не должно иметь значения, какой тип ввода вы используете.Это особенно верно, чтобы сделать ваше приложение доступным и инклюзивным.Клавиатура, например, не вызывает событие Tapped
.