Pregunta

estoy anulando los estilos de mis ListBoxItems con un ControlTemplate, sin embargo al hacer eso, perdí el controlador para mi evento ListBoxItem clic. He encontrado un puesto que era útil en decir que necesito para agregar un controlador de eventos en el ControlTemplate, pero no sé cómo hacer esto.

Cualquier ayuda y orientación sobre cómo hacer esto es muy apreciada!

¿Fue útil?

Solución

ListBoxItem no tiene un "clic" evento, por lo que no está claro lo que estaba haciendo o qué funcionalidad que perdió cuando agregó ControlTemplate.

Si usted tiene un botón en su ControlTemplate puede configurar su evento Click exactamente de la misma manera como lo haría fuera de la ContolTemplate. He aquí un ejemplo sencillo donde ListBoxItem no hace más que mostrar un botón al lado del contenido, y ese botón llama a un controlador de eventos llamado "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>

Si lo que quiere decir es que quiere que su ListBoxItem para visualizar de forma diferente dependiendo de si el elemento está seleccionado o no, acaba de establecer un disparador en IsSelected:

<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>

Otros consejos

¿Es realmente haga clic en el ratón que está buscando, o simplemente que responde a un cambio en la selección? Si es así, es posible que desee utilizar ListBox.SelectionChanged lugar.

De lo contrario, creo que es tan simple como añadir un onclick = ... en la plantilla; el remitente será el elemento que consiguió hace clic.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top