如何在代码后面取消Accordion.SelectionChanged?

时间:2011-07-22 00:38:30

标签: silverlight accordion

我正在使用Silverlight工具包Accordion控件。

我想取消基于某种逻辑的手风琴选择。

例如:

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

此代码会导致对Accordion_SelectionChanged的无限调用,即使第一次递归调用不会影响所选项目。

还有其他方法吗?

韩国社交协会

1 个答案:

答案 0 :(得分:0)

您可以手动阻止递归调用,如下所示:

bool isCancellingSelection = false;

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

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