1 votes

Comment créer des StackedBarSeries avec une info-bulle personnalisée sans perdre les couleurs standard ?

J'ai un StackedBarSeries dans les graphiques de Silverlight 4 (dernière version).

J'ai créé un DataPointStyle appelé MyDataPointStyle pour une infobulle personnalisée. En soi, cela rompt la palette standard utilisée pour les différentes barres.

J'ai appliqué une palette personnalisée - telle que décrite dans le document Le blog de David Anson à la carte. Cependant, lorsque j'ai l'option DataPointStyle pour mon SeriesDefinition n'utilise pas cette palette.

Je ne sais pas ce qui m'échappe, mais David dit expressément :

.. DynamicResource (actuellement seulement supportée par la plateforme WPF) pour permettre utilisateurs de personnaliser leur DataPointStyle sans perdre par inadvertance le style couleurs de la palette par défaut/personnalisée. (Remarque : Une demande très populaire).

Malheureusement, je perds ces couleurs par inadvertance - et je ne vois pas pourquoi ?

    <chartingToolkit:Chart.Palette>
        <dataviz:ResourceDictionaryCollection>
            <ResourceDictionary>
                <Style x:Key="DataPointStyle" TargetType="Control">
                    <Setter Property="Background" Value="Blue"/>
                </Style>
            </ResourceDictionary>
            <ResourceDictionary>
                <Style x:Key="DataPointStyle" TargetType="Control">
                    <Setter Property="Background" Value="Green"/>
                </Style>
            </ResourceDictionary>
            <ResourceDictionary>
                <Style x:Key="DataPointStyle" TargetType="Control">
                    <Setter Property="Background" Value="Red"/>
                </Style>
            </ResourceDictionary>
        </dataviz:ResourceDictionaryCollection>
    </chartingToolkit:Chart.Palette>

    <chartingToolkit:Chart.Series>

        <chartingToolkit:StackedBarSeries>

            <chartingToolkit:SeriesDefinition
                        IndependentValueBinding="{Binding SKU}" 
                        DependentValueBinding="{Binding Qty}" 
                        DataPointStyle="{StaticResource MyDataPointStyle}"
                        Title="Regular"/>

            <chartingToolkit:SeriesDefinition
                        IndependentValueBinding="{Binding SKU}" 
                        DependentValueBinding="{Binding Qty}" 
                        DataPointStyle="{StaticResource MyDataPointStyle}"
                        Title="FSP Orders"/>

            <chartingToolkit:StackedBarSeries.IndependentAxis>
                <chartingToolkit:CategoryAxis Title="SKU" Orientation="Y" FontStyle="Italic" AxisLabelStyle="{StaticResource LeftAxisStyle}"/>
            </chartingToolkit:StackedBarSeries.IndependentAxis>

                <chartingToolkit:StackedBarSeries.DependentAxis>
                <chartingToolkit:LinearAxis Orientation="X" ExtendRangeToOrigin="True" Minimum="0" ShowGridLines="True" />
            </chartingToolkit:StackedBarSeries.DependentAxis>

        </chartingToolkit:StackedBarSeries >
    </chartingToolkit:Chart.Series>

</chartingToolkit:Chart>

4voto

AnthonyWJones Points 122520

L'indice se trouve dans la citation de David que vous avez postée : "actuellement seulement supporté par la plateforme WPF", c'est-à-dire qu'il n'est pas supporté par Silverlight.

Dès que vous fournissez votre propre DataPointStyle vous remplacez tout style qui aurait été fourni par la palette (soit celle par défaut, soit votre palette personnalisée).

Editer :

Voici comment procéder. Au lieu de fournir un style à l'élément DataPointStyle d'une série ou d'une définition, vous laissez la palette s'en charger. Cependant, les styles de la palette peuvent utiliser la propriété Style de l'objet BasedOn afin d'éviter les doublons. Donc:-

<UserControl.Resources>
   <Style x:Key="MyDataPointStyle" TargetType="DataPoint">
     <!-- Set up the general style for the points may even include a Template -->
   </Style>

...

<chartingToolkit:Chart.Palette>      
    <dataviz:ResourceDictionaryCollection>      
        <ResourceDictionary>      
            <Style x:Key="DataPointStyle" TargetType="chartingToolkit:BarDataPoint" BasedOn="{StaticResource MyDataPointStyle}" >      
                <Setter Property="Background" Value="Blue"/>      
            </Style>      
        </ResourceDictionary>      
        <ResourceDictionary>      
            <Style x:Key="DataPointStyle" TargetType="chartingToolkit:BarDataPoint" BasedOn="{StaticResource MyDataPointStyle}">      
                <Setter Property="Background" Value="Green"/>      
            </Style>      
        </ResourceDictionary>      
        <ResourceDictionary>      
            <Style x:Key="DataPointStyle" TargetType="chartingToolkit:BarDataPoint" BasedOn="{StaticResource MyDataPointStyle}">      
                <Setter Property="Background" Value="Red"/>      
            </Style>
        </ResourceDictionary>          
    </dataviz:ResourceDictionaryCollection>          
</chartingToolkit:Chart.Palette>          

<chartingToolkit:Chart.Series>          

    <chartingToolkit:StackedBarSeries>          

        <chartingToolkit:SeriesDefinition          
                    IndependentValueBinding="{Binding SKU}"           
                    DependentValueBinding="{Binding Qty}"           
                    Title="Regular"/>

...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X