Frage

Ich möchte ListBoxItem -Auslöser von zwei Ereignissen aus dem äußeren Usercontrol auslösen, das die Listbox enthält. Hier ist, was ich so weit habe:

<ListBox 
            Background="Black"
            Selected="listbox_selected"
            x:Name="listBox">

            <ListBox.Resources>
                <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsMouseOver,RelativeSource={RelativeSource Self}}" 
                         Value="True">
                            <Setter Property="IsSelected" Value="True" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ListBox.Resources>
        </ListBox>

Dies ruft nun mein Ereignis von ListBox_Selected auf. Was ich möchte, ist eine andere Veranstaltung oder Eigenschaft, wenn ich mausover ist. Um es klar zu machen, weiß ich, wie man den Hintergrund/den Vordergrund oder die anderen Eigenschaften des ListBoxItem selbst ändert. Aber ich möchte etwas vom Großelternteil ändern.

War es hilfreich?

Lösung

Sie haben bereits dieses Ereignis ... behandeln ein statisches Routed -Ereignis von ListBoxItem Klasse namens "ausgewählt" (und es gibt auch "nicht ausgewählt") bei jedem Vorfahren, vorausgesetzt, wir verarbeiten das Ereignis von "Selektion" überall im Descendent -Baum ...

  <Window x:Class="...."
          ...
          ListBoxItem.Selected="OnListBoxSelected">  
   <Grid>
      <ListBox ItemsSource="{Binding Employees}"
               DispalyMemberPath="Name"
               selectedValuePath="ID" >
        <ListBox.Resources>
            <Style TargetType="ListBoxItem"
                   BasedOn="{StaticResource
                                {x:Type ListBoxItem}}">
                <Style.Triggers>
                   <DataTrigger Binding="{Binding IsMouseOver,
                                            RelativeSource={RelativeSource
                                              Self}}"
                                Value="True">
                         <Setter Property="IsSelected"
                                 Value="True" />
                  </DataTrigger>
               </Style.Triggers>
           </Style>
       </ListBox.Resources> 
      </ListBox>
   </Grid>
 </Window>

Und im Code hinter ...

    private void OnListBoxSelected(object sender, RoutedEventArgs e)
    {
        var window = sender as Window;
        var listBoxItem = e.OriginalSource as ListBoxItem;
        var selectedItem = listBoxItem.DataContext;
    }

Hoffe das hilft...

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