none
Error Binding Chart Background using ResourceDictionary - Definir cor Background usando ResourceDictionary RRS feed

  • Pergunta

  • Pessoal, estou com um problema para fazer o Binding de cores para Series de um Chart.

    Segue Códigos:

    #region ColumnSeries
                            ColumnSeries oChart = new ColumnSeries();

                            List<ValoresGrafico> lstValoresGrafico = new List<ValoresGrafico>();

                            foreach (DataRow Linha in dttDadosGrafico.Rows)
                            {
                                strTexto = Linha["NomeItem"].ToString();
                                oDictionarySingle.Add(Linha["ValorX"].ToString(), Convert.ToInt32(Linha["ValorY"]));

                                ValoresGrafico objValores = new ValoresGrafico();
                                objValores.ValorCor = (item.CorGrafico != null && item.CorGrafico != string.Empty) ? RetornaCor(item.CorGrafico) : Brushes.Green;
                                objValores.ValorInt = Convert.ToInt32(Linha["ValorY"]);
                                objValores.ValorString = Linha["ValorX"].ToString();
                                lstValoresGrafico.Add(objValores);
                            }
                            oChart.IndependentValuePath = "ValorString";
                            oChart.DependentValuePath = "ValorInt";
                            oChart.Title = strTexto;
                            oChart.ItemsSource = lstValoresGrafico;
                            oChart.SetResourceReference(ColumnSeries.DataPointStyleProperty, "ResourceColumnDataPoint");

                            #region Inclui Cor
                            if (item.CorGrafico != null && item.CorGrafico != string.Empty)
                            {
                                oChart.Background = RetornaCor(item.CorGrafico);
                            }
                            #endregion

                            #region Inclui Axis Independente
                            if (item.AxisIndependente)
                            {
                                LinearAxis ax = new LinearAxis();
                                ax.Orientation = AxisOrientation.Y;
                                ax.ShowGridLines = false;
                                double axMax = new double(), axMin = new double();
                                CalcularMaxMinAxis(ref axMax, ref axMin, dttDadosGrafico);

                                ax.Maximum = axMax;
                                ax.Minimum = axMin;
                                oChart.DependentRangeAxis = ax;
                            }
                #endregion

    //Adiciona a Series no Chart.
                            objChart.Series.Add((ColumnSeries)oChart);

        public class ValoresGrafico
        {
            public string ValorString { get; set; }
            public int ValorInt { get; set; }
            public Brush ValorCor { get; set; }
        }

    Style:

    <Style x:Key="ResourceColumnDataPoint" TargetType="Chart:ColumnDataPoint">

            <Setter Property="Background" Value="{Binding ValorCor}"></Setter>

            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate 
                            TargetType="Chart:ColumnDataPoint">
                        <Grid Background="{TemplateBinding Background}">
                            <TextBlock Text="{TemplateBinding FormattedDependentValue}" 
                                            FontWeight="Bold" 
                                            Margin="0,-15,0,0" 
                                            HorizontalAlignment="Stretch" 
                                            TextAlignment="Center" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    Qual o problema.... Se eu utilizar "<Setter Property="Background" Value="Red"></Setter>" no Style... funciona normalmente, os SERIES E a LEGENDA serão preenchidos com a cor Vermelha. Mas se eu utilizar "<Setter Property="Background" Value="{Binding Source=ValorCor}"></Setter>", tentando fazer o preenchimento de forma dinâmica, as Series ficam com as cores corretas, mas as Legendas ficam sem cor.

    Ao utilizar esse Style, as cores do Palette ficam definidas como NULL. Alguém saberia me dizer como faço para setar o Binding de forma dinâmica ou voltar o Palette para as cores Default?

    Obrigado desde já pela ajuda de todos.

    segunda-feira, 17 de setembro de 2012 14:21

Todas as Respostas

  • Dá uma olhada na janela Output do Visual Studio durante a execução. Se ela não estiver visível, vá no menu Exibir e habilite ela. Lá ele mostra os erros de BIND durante a execução. Localiza e copia o erro que está dando lá que fica mais fácil ajudá-lo!

    Valeu!

    terça-feira, 18 de setembro de 2012 13:22