2011-05-16 68 views
0

這是我的代碼,用於將字典項綁定到圖表控件。我不斷收到以下錯誤:綁定字典到WPF工具包圖表

「索引超出範圍必須爲非負數且小於集合的大小參數名:索引」

這裏是我的代碼:

foreach (DataRow drow in objD0s.Tables[0].Rows)// Adding values from a dataset to dictionary  
    { 


     string strvalue = Convert.ToString(drow["Chemical Name"]); 
     string doublevalue = Convert.ToString(drow["Global Warming"]); 
     Cdata.Add(Convert.ToString(strvalue), Convert.ToDouble(doublevalue)); 

    } 
    ColumnSeries colSeries = ChartChemImpact.Series[0] as ColumnSeries;  

     ((ColumnSeries)ChartChemImpact.Series[0]).DataContext = Cdata; 
     colSeries.ItemsSource = myDataTable0.DefaultView; 
     colSeries.IndependentValueBinding = new Binding("[Chemical Name]"); 
     colSeries.DependentValueBinding = new Binding("[Global Warming]"); 

    } 

XAM

chartingToolkit:Chart Name="ChartChemImpact" Title="Chart Title" Width="384"   Height="280"> 
    <chartingToolkit:ColumnSeries DependentValuePath="Key" IndependentValuePath="Value" ItemsSource="{Binding}" Name="colSeries" /> 
    </chartingToolkit:Chart> 

請幫助:(

+0

數據集有兩列「化學名稱」和「全球變暖」 – MangoTable 2011-05-16 18:38:33

+0

1 ValueBindings從ItemsSource屬性接受他們的價值觀,這ISN是一本字典(但奇怪的類DefaultView)。 2.'IndependentValueBinding'與'IndependentValuePath'相同,它應用於一個項目,而不是集合。所以代碼文件的最後三行是不正確的。 – vorrtex 2011-05-16 21:25:26

回答

1

好的,我發現了錯誤。 xaml中有綁定和值路徑,但它們在代碼中被替換。

我會刪除那些行,所以這裏是結果:

foreach (DataRow drow in objD0s.Tables[0].Rows)// Adding values from a dataset to dictionary  
{ 
    string strvalue = Convert.ToString(drow["Chemical Name"]); 
    string doublevalue = Convert.ToString(drow["Global Warming"]); 
    Cdata.Add(Convert.ToString(strvalue), Convert.ToDouble(doublevalue)); 
} 

((ColumnSeries)ChartChemImpact.Series[0]).DataContext = Cdata; 
//And that's the end of the function, no more code 
} 
+0

感謝您的迴應!我想這裏還有其他一些問題,我仍然一直得到同樣的錯誤。這個問題可能出現在XAML代碼中。 – MangoTable 2011-05-17 18:03:48

+0

@MangoTable我沒有注意到xaml。是的,相應地將屬性'DependentValuePath =「Key」'更改爲'DependentValuePath =「Value」'和'IndependentValuePath'。 – vorrtex 2011-05-17 20:55:36

+0

感謝您的回覆。改變這一行:「((ColumnSeries)ChartChemImpact.Series [0]).DataContext = Cdata;」簡單地colSeries.ItemsSource = CData;爲我工作。 – MangoTable 2011-05-18 22:38:21