Как отменить Accordion.SelectionChanged на код позади? - PullRequest
0 голосов
/ 22 июля 2011

Я использую набор инструментов Silverlight Accordion control.

Я хочу отменить выбор аккордеона, основываясь на некоторой логике.

Например:

private void Accordion_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    if(Something) {
        e.SelectedItem = -1; //or anything that cancels the accordion "expansion"
        return;
    }
}

Этот код приводит к бесконечным вызовам Accordion_SelectionChanged, даже если первый рекурсивный вызов не влияет на выбранный элемент.

Есть ли другой способ сделать это?

Tks

1 Ответ

0 голосов
/ 22 июля 2011

Вы можете вручную запретить рекурсивные вызовы следующим образом:

bool isCancellingSelection = false;

private void Accordion_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    if (isCancellingSelection)
        return;

    if(Something) {
        isCancellingSelection = true;
        e.SelectedItem = -1; 
        isCancellingSelection = false;
    }
}
...