Как изменить цвета каждой линии на графике silverlight 4 в xaml - PullRequest
2 голосов
/ 03 августа 2011

Как изменить цвета каждой строки в xaml для диаграммы набора инструментов silverlight 4? Я видел много кода за трюки, но я не хочу этого делать. Есть ли способ сделать это с помощью mvvm? Я бы предпочел сделать это в xaml.

Вот что я пробовал:

<toolkit:Chart Grid.Row="1" Title="Actuals + Forecast" DataContext="{Binding Path=SelectedSKU}">
            <toolkit:Chart.Series>
                <toolkit:LineSeries Title="Manual Forecast"
                                    ItemsSource="{Binding Path=LstChartData}"
                                    IndependentValueBinding="{Binding Path=StrPeriod}"
                                    DependentValueBinding="{Binding Path=DQuantity}" BorderBrush="#FFFF0300"/>
                <toolkit:LineSeries Title="Automatically Generated Forecast"
                                    ItemsSource="{Binding Path=LstAChartData}"
                                    IndependentValueBinding="{Binding Path=StrPeriod}"
                                    DependentValueBinding="{Binding Path=DQuantity}" Foreground="Green"BorderBrush="Green" />
                <toolkit:LineSeries Title="Actual History"
                                    ItemsSource="{Binding Path=LstMChartData}"
                                    IndependentValueBinding="{Binding Path=StrPeriod}"
                                    DependentValueBinding="{Binding Path=DQuantity}" Foreground="Blue" />
            </toolkit:Chart.Series>
        </toolkit:Chart>

Я видел эту статью: http://blogs.msdn.com/b/delay/archive/2009/02/04/columns-of-a-different-color-customizing-the-appearance-of-silverlight-charts-with-re-templating-and-mvvm.aspx, но там написано Silverlight 2. Я слышал, что он полностью отличается от Silverlight 4.

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Разобрался:

<toolkit:Chart Grid.Row="1" Title="Actuals + Forecast" DataContext="{Binding Path=SelectedSKU}">
        <toolkit:Chart.Series>
            <toolkit:LineSeries Title="Manual Forecast"
                                ItemsSource="{Binding Path=LstChartData}"
                                IndependentValueBinding="{Binding Path=StrPeriod}"
                                DependentValueBinding="{Binding Path=DQuantity}">
                <toolkit:LineSeries.DataPointStyle>
                    <Style TargetType="toolkit:LineDataPoint">
                        <Setter Property="Background" Value="Lime" />
                        <Setter Property="Template" Value="{x:Null}"/>
                    </Style>
                </toolkit:LineSeries.DataPointStyle>
            </toolkit:LineSeries>
        </toolkit:Chart.Series>
    </toolkit:Chart>

удаляет текущую точку, поэтому, если вы хотите, чтобы точка убрала этот стиль.

@ Vorrtex, ваше решение, кажется, слишком усложняет мои простые требования.Не то чтобы это плохо, но просто не то, что я искал, но спасибо, что нашли время помочь.

0 голосов
/ 13 июня 2013

Один из способов - предоставить стиль, который переопределяет палитру для графика:

<Style x:Key="newGraphPalette" TargetType="toolkit:Chart">

  <Setter Property="Palette">
     <Setter.Value>
       <toolkit:ResourceDictionaryCollection>
         <!-- set the first line color to red -->
         <ResourceDictionary>
            <SolidColorBrush x:Key="Background" Color="Red"/>
            <Style x:Key="DataPointStyle" TargetType="Control">
               <Setter Property="Background" Value="StaticResource Background"/>
            </Style>
         </ResourceDictionary>

         <!-- set the second line color to green -->
         <ResourceDictionary>
            <SolidColorBrush x:Key="Background" Color="Green"/>
            <Style x:Key="DataPointStyle" TargetType="Control">
               <Setter Property="Background" Value="StaticResource Background"/>
            </Style>
         </ResourceDictionary>


         <!-- set the third line color to blue -->
         <ResourceDictionary>
            <SolidColorBrush x:Key="Background" Color="Blue"/>
            <Style x:Key="DataPointStyle" TargetType="Control">
               <Setter Property="Background" Value="StaticResource Background"/>
            </Style>
         </ResourceDictionary>
       </toolkit:ResourceDictionaryCollection>
     </Setter.Value>
  </Setter>

</Style>

А если вы хотите использовать эту конкретную палитру - используйте

Style="StaticResource newGraphPalette"

, это будетпереписать палитру диаграммы по умолчанию, и вам нужно только определить цвета в ресурсе (стиле), который можно использовать повторно.

Надеюсь, это полезно.

...