Hallo!
Ich habe folgendes Data Template:
<DataTemplate>
<Border x:Name="brd" BorderThickness="4" CornerRadius="12">
<TextBlock Name="text" Text="{Binding Path=Name}" FontSize="20">
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Role}" Value="Admin">
<Setter TargetName="text" Property="Foreground" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
Dieses wird auf Items in einer Listbox angewandt.
Jetzt möchte ich dass bei einem Click auf eines der Items der Hintergrund farbig hervorgehoben wird.
Mit einem Property Trigger funktioniert dies allerdings nicht:
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="Yellow"></Setter>
</Trigger>
Die hierdurch generierte Fehlermeldung lautet:
"Cannot find the Template Property 'IsSelected' on the type 'System.Windows.Controls.ContentPresenter'."
Bei einem Control Template hat es so funktioniert.
Irgendwelche Ideen?
Hallo!
Die hierdurch generierte Fehlermeldung lautet:
"Cannot find the Template Property 'IsSelected' on the type 'System.Windows.Controls.ContentPresenter'."Bei einem Control Template hat es so funktioniert.
Irgendwelche Ideen?
Die Fehlermeldung gibt dir den entscheidenden Hinweis. Der DataContext innerhalb des Datatemplates ist auf ContentPresenter gesetzt. Die Klasse ContentPresenter hat keine Property IsSelected. Deshalb auch die Fehlermeldung.
Wenn du überprüfen willst, ob ein ListBixItem Selected ist must du also auf die Klasse ListBoxItem zugreifen.
Das kannst du mit der RelativeSource.
Achja dafür must du den Datatrigger verwenden.
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}
Siehe auch:
http://get-the-solution.net/2009/03/28/listbox-selecteditem-zusatzinformationen-anzeigen/
Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp