Marque a caixa de gatilho evento

votos
0

Eu tenho duas telas no meu aplicativo cada um com mesmo componente do mapa. As camadas do mapa são armazenadas como dois lista de objetos com ids simples das camadas que representam as camadas visíveis em cada tela

                <CheckBox 
                    VerticalAlignment=Center 
                    Margin=3 
                    IsChecked={Binding Visible}
                    ToolTip=Layer visibility
                    Checked=Visible_Changed
                    Unchecked=Visible_Changed
                    />

À medida que o usuário navega entre as duas telas a propriedade visível da camada é acionado a partir do código por trás e a caixa de seleção reflete o mesmo. As camadas se comportam como deveriam também.

O problema é que agora o usuário pode selecionar uma das camadas em qualquer tela como alterar a propriedade visível da camada, caso em que eu tenho que atualizar a lista de camada de que a tela.

Existe alguma maneira eu posso fazer a caixa de seleção não disparar o evento quando a propriedade visível é alterada pelo código. Eu só quero o evento para acionar quando o usuário verifica a caixa de seleção

Publicado 12/05/2015 em 12:16
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Enquanto você não pode parar o evento de ser demitido, você pode encapsular o código no manipulador com um cheque de uma boolbandeira, que você definir para trueao chamar manualmente o código:

<CheckBox Checked="CheckBoxChanged" Unchecked="CheckBoxChanged" />

...

private void CheckBoxChanged(object sender, RoutedEventArgs e)
{
    if (!isNotLocalChange)
    {
        // the user changed the Checked value
    }
}

em outro lugar...

isNotLocalChange = true;
// Do your programmatic change here
isNotLocalChange = false;
Respondeu 12/05/2015 em 12:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more