|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
[WPF] Cambiare l'opacita' degli elementi NON selezionati in un ItemsControl
So che sembra strano ma ho bisogno di evidenziare l'elemento selezionato di un ItemsControl, agendo sull'opacita' degli altri elementi non selezionati, rendendo questi piu' "offuscati".
Ho un custom control "MyCustomControl" che deriva da ItemsControl i cui item sono delle istanze di una classe "MyObject". Ho fatto uno stile "MyStyle" per "MyCustomControl" che ridefinisce l'ItemTemplate in modo che diventi una Image la cui proprieta' Source e' in binding con la proprieta' LargeImage del mio oggetto "MyObject". Quando seleziono un elemento vorrei che gli altri diventassero piu' offuscati, agendo sulla loro "opacity". Ma non so come fare. Ecco il mio codice XAML semplificato: Codice:
<Style TargetType="{x:Type MyCustomControl}" x:Key="MyStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ui:MyCustomControl}">
<Border Height="{TemplateBinding Height}" Width="Auto" Background="{TemplateBinding Background}">
<ItemsPresenter VerticalAlignment="Center" IsHitTestVisible="True"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Grid>
<Button>
<Image Source="{Binding Path=LargeImage}" Stretch="Uniform"/>
</Button>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2007
Messaggi: 488
|
Puoi fare come fanno sia il ListBox che il ListView, al posto di inserire il contenuto direttamente nel pannello dell'ItemsControl lo inserisci dentro un tuo controllo che per esempio puoi chiamare MyCustomControlItem, questo oggetto esporrà una proprietà IsSelected che poi potrai usare per gestire l'opacity. Sostanzialmente wrappi il contenuto dentro un altro oggetto che ti aiuta a gestire le funzionalità del tuo controllo visuale, non ha senso mettere questa logica nella visualizzazione dei dati. A questo punto però, perchè non usare un ListBox?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:12.



















