Pergunta

Estou substituindo os estilos do meu ListBoxItems com um ControlTemplate, no entanto, ao fazer isso, perdi o manipulador do meu evento ListBoxItem Click. Encontrei um post que foi útil para dizer que preciso adicionar um manipulador de eventos no ControlTemplate, mas não sei como fazer isso.

Qualquer ajuda e orientação sobre isso é muito apreciada!

Foi útil?

Solução

O ListBoxItem não possui um evento "clique", por isso não está claro o que você estava fazendo ou qual funcionalidade perdeu quando adicionou o ControlTemplate.

Se você tiver um botão no seu ControlTemplate, poderá definir o evento de clique exatamente da mesma maneira que faria fora do contorno. Aqui está um exemplo simples em que o ListBoxItem não faz nada senão mostrar um botão ao lado do conteúdo, e esse botão chama um manipulador de eventos chamado "OnClickMebuttonClicked":

<Style TargetType="ListBoxItem">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="ListBoxItem">
        <DockPanel>
          <Button Content="ClickMe" Click="OnClickMeButtonClicked" />
          <ContentPresenter />
        </DockPanel>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Se o que você quis dizer é que deseja que seu ListBoxItem seja exibido de maneira diferente, dependendo se o item está selecionado ou não, basta definir um gatilho no ISSELECTECT:

<ControlTemplate TargetType="ListBoxItem">
  <Border Name="Bd">
    <ContentPresenter />
  </Border>

  <ControlTemplate.Triggers>
    <Trigger Property="IsSelected" Value="true">
      <Setter TargetName="Bd" Property="Background" Value="Blue" />
    </Trigger>
  </ControlTemplate.Triggers>
</ControlTemplate>

Outras dicas

É realmente o clique do mouse que você procura ou está apenas respondendo a uma mudança na seleção? Nesse caso, você pode usar o ListBox.SelectionChanged.

Caso contrário, acredito que é tão simples quanto adicionar um OnClick = ... no modelo; O remetente será o elemento que foi clicado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top