none
Incluir una nueva Propiedad en un Estilo de un ListView RRS feed

  • Pregunta

  • Buenas, tengo un problema en el que necesito vuestra ayuda, no se muy bien como explicarme, a ver si consigo hacerlo medianamente

    Tengo una elemento ListView  al que le he aplicado un estilo que tiene un color cuando el raton se posiciona encima de un elemento (ismouseover ), otro color cuando se ha seleccionado un elemento (isselected) y que me gustaría que pudiera tener diferentes colores dependiendo de alguna propiedad como por ejemplo la propiedad (Sistema.Estado) esta propiedad es de cada ítem de la lista, he conseguido hacerlo en el DataTemplate, pero me gustaría poder añadirlo directamente en el estilo porque no me cambia el color en el ítem de la lista completo sino solo en el gridview ( intento poneros unas imágenes como muestra ).

    El primero es con la propiedad IsSelected y el segundo es con la propiedad Is Enabled de "GridSistema", como veréis se queda fuera lo que es el Ítem de la lista y solo marca el Grid.

    He intentado hacerlo con la propiedad Tag que es un texto para poder darle 4 o 5 colores distintos pero no consigo que cambie el color.

    ¿ Alguna Idea ? ¿ Os dejo el código del ListView y el del Estilo.

    Gracias de antemano

    La lista : 

    <ListView x:Name="listadesistemas" Grid.Row="1"
                                ItemContainerStyle="{ DynamicResource ListaSistemasItem}"
                                BorderBrush="Transparent" Background="Transparent" 
                                HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                                ScrollViewer.HorizontalScrollBarVisibility="Hidden"  
                                ScrollViewer.VerticalScrollBarVisibility="Disabled"
                                IsSynchronizedWithCurrentItem="True"
                                ItemsSource="{Binding ListaSistemas}" 
                                SelectedItem="{Binding Sistema, Mode=TwoWay}" 
                                SelectedIndex="{Binding FilaSistema, Mode=TwoWay}" 
                                Tag="{ Binding Sistema.Estado }" >
    
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        
                                        <Grid x:Name="GridSistema" IsEnabled="{ Binding EstadoSistema}" >
    
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="35" />
                                            </Grid.RowDefinitions>
    
                                            <StackPanel Margin="10,10,0,10" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Center">
    
                                                <Grid>
    
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition />
                                                    </Grid.ColumnDefinitions>
    
                                                    <TextBlock VerticalAlignment="Center" Grid.Column="2">
                                                        <InlineUIContainer> 
                                                            <ContentControl Content="{Binding Nombre}" 
                                                                FontSize="11" FontWeight="SemiBold"
                                                                HorizontalAlignment="Stretch" VerticalAlignment="Center" />
                                                        </InlineUIContainer>
                                                    </TextBlock>
    
                                                </Grid>
    
                                            </StackPanel>
    
                                        </Grid>
    
                                        <DataTemplate.Triggers>
                                            <Trigger SourceName="GridSistema" Property="IsEnabled" Value="False">
                                                <Setter TargetName="GridSistema" Property="Background" Value="{ DynamicResource ColorPrueba4}" />
                                            </Trigger>
                                        </DataTemplate.Triggers>
                                        
                                    </DataTemplate>
                                </ListView.ItemTemplate>
    
                            </ListView>

    Para esta lista he declarado un estilo en un ResourceDictionary de la siguiente forma:

    <Style x:Key="ListaSistemasItem" TargetType="{x:Type ListViewItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListViewItem}">
                        <Border x:Name="OuterBorder" Margin="{TemplateBinding Margin}" 
                            BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" 
                            Background="{TemplateBinding Background}" CornerRadius="3" Padding="{TemplateBinding Padding}">
                            <ContentPresenter/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="Tag" Value="1">
                                <Setter Property="Background" Value="{DynamicResource ColorPrueba1 }" />
                            </Trigger>
                            <Trigger Property="Tag" Value="2">
                                <Setter Property="Background" Value="{DynamicResource ColorPrueba2 }" />
                            </Trigger>
                            <Trigger Property="Tag" Value="3">
                                <Setter Property="Background" Value="{DynamicResource ColorPrueba3 }" />
                            </Trigger>
                            
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="{ StaticResource CursorEncima }"/>
                            </Trigger>
                            
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="{ StaticResource Seleccionado }"/>
                            </Trigger>
                            
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
    

    miércoles, 2 de mayo de 2018 15:32