NOTA Ho chiesto la relativa domanda: How to combine DataTrigger and EventTrigger?WPF - Come combinare DataTrigger e Trigger?
Ho una scatola elenco contenente diversi elementi. La classe dell'oggetto implementa INotifyPropertyChanged
e ha una proprietà IsAvailable
. Io uso quella proprietà per indicare opzioni non disponibili nella lista usando un colore diverso.
Tuttavia, se un elemento selezionato non è disponibile, il colore di primo piano dovrebbe essere rosso.
<ListBox>
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:InstitutionViewModel}">
<TextBlock Name="Name" Text="{Binding Name}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsAvailable}" Value="False">
<Setter TargetName="Name" Property="Foreground" Value="#888"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.Resources>
</ListBox>
Uso il trigger di dati sopra riportato per escludere elementi non disponibili.
Il problema che sto affrontando è che il fatto che l'elemento sia selezionato non ha nulla a che fare con i dati sottostanti a cui è associato il modello. Quello che voglio veramente è una sorta di multi-trigger che supporta sia un normale Trigger
su una proprietà di dipendenza (ListBoxItem.IsSelected
) insieme a un DataTrigger
sull'elemento di dati associato.
Questo può essere fatto senza introdurre il concetto di selezione nel mio modello di vista?
Per chiunque si chieda il motivo per cui non disattivo gli articoli non disponibili, è necessario specificare che è possibile che siano disponibili opzioni non disponibili. In effetti ci sono alcune caselle di elenco e la selezione in uno degli effetti disponibili negli altri. Non posso disabilitare gli elementi in quanto l'utente non sarebbe in grado di cambiare idea o esplorare combinazioni diverse se gli elementi fossero disabilitati in base alle selezioni precedenti.
che è esattamente quello che stavo raccomandare. Per quanto ne so è la soluzione migliore. –
basta colpire questo stesso problema. Eccellente punto di vista, dimenticato il legame relativo alla fonte. – Stimul8d
eccellente! grazie per questo! – Fredrik