Как создать StackedBarSeries с настраиваемой всплывающей подсказкой без потери стандартных цветов - PullRequest
1 голос
/ 31 мая 2010

У меня есть StackedBarSeries в графике Silverlight 4 (последняя версия).

Я создал DataPointStyle с именем MyDataPointStyle для пользовательской подсказки. Само по себе это нарушает стандартную палитру, используемую для разных баров.

Я применил пользовательскую палитру - как описано в блог Дэвида Ансона к диаграмме. Однако, когда у меня установлен DataPointStyle для моих объектов SeriesDefinition, он не использует эту палитру.

Я не уверен, что мне не хватает - но Дэвид специально говорит:

... это позволяет использовать DynamicResource (в настоящее время только поддерживается платформой WPF), чтобы пользователи настраивают свой DataPointStyle без случайной потери стандартные / пользовательские цвета палитры. (Заметка: Очень популярный запрос!)

К сожалению, я случайно теряю эти цвета - и я не понимаю, почему?

    <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>

1 Ответ

4 голосов
/ 31 мая 2010

Подсказка в цитате, которую вы отправили от Дэвида, "в настоящее время поддерживается только платформой WPF", то есть не поддерживается в Silverlight.

Как только вы вводите свой собственный DataPointStyle, вы заменяете любой стиль, который был бы предоставлен палитрой (либо стиль по умолчанию, либо ваша пользовательская палитра).

Редактировать

Вот как это делается. Вместо того, чтобы предоставлять стиль для свойства DataPointStyle серии или определения, вы оставляете его на палитре. Однако стили в палитре могут использовать свойство BasedOn объекта Style, чтобы избежать дублирования. Итак: -

<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"/>

...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...