Frage

Ich bin überschreiben die Stile meiner ListBoxItems mit einem Control jedoch durch das zu tun, verlor ich den Handler für meine ListBoxItem Click-Ereignis. Ich fand einen Beitrag, die hilfreich war er sagt, ich brauche einen Event-Handler in der Control hinzufügen, aber ich weiß nicht, wie dies zu tun.

Jede Hilfe & Richtung auf diese Weise ist sehr zu schätzen!

War es hilfreich?

Lösung

ListBoxItem hat nicht ein „Klick“ -Ereignis, so dass es ist nicht klar, was Sie tun oder welche Funktionen Sie verloren, wenn Sie die Control hinzugefügt.

Wenn Sie auf eine Schaltfläche in Ihrem Control haben Sie sein Click-Ereignis genau die gleiche Art und Weise, wie Sie es außerhalb der ContolTemplate gesetzt. Hier ist ein einfaches Beispiel, in dem ListBoxItem tut nichts anderes, als Show einen Knopf neben dem Inhalt, und diese Taste ruft eine Ereignisbehandlungsroutine namens „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>

Wenn Sie was gemeint ist, dass Sie möchten, dass Ihre ListBoxItem unterschiedlich angezeigt werden, je nachdem, ob das Element ausgewählt ist oder nicht, stellen nur einen Trigger auf 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>

Andere Tipps

Ist es wirklich die Maus klicken Sie nach, oder reagieren Sie nur auf eine Änderung der Auswahl? Wenn ja, Sie verwenden möchten, können ListBox.SelectionChanged statt.

Ansonsten glaube ich, es so einfach wie ein OnClick Hinzufügen = ... in der Vorlage; der Absender das Element sein, das angeklickt wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top