我在chartingToolkit(silverlight)中遇到了BubbleSeries的问题。我搜索了很多并阅读了很多问题,但我找不到答案。在用户控制内部,我得到了这个图表:
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
<chartingToolkit:Chart Height="600" Width="900" BorderThickness="0" Title="CPU Await Time" VerticalAlignment="Bottom" >
<chartingToolkit:Chart.Axes>
<chartingToolkit:CategoryAxis Title="Lambda" Orientation="X" Height="40" />
<chartingToolkit:LinearAxis Title="Time [ms]" Orientation="Y" ShowGridLines="True" Width="60" />
</chartingToolkit:Chart.Axes>
<chartingToolkit:Chart.LegendStyle>
<Style TargetType="Control">
<Setter Property="Width" Value="0" />
</Style>
</chartingToolkit:Chart.LegendStyle>
<chartingToolkit:BubbleSeries SizeValueBinding="{Binding Size}" DependentValuePath="Val.CPUAwaitTime" IndependentValuePath="Key"
ItemsSource="{Binding ResultsList}" IsSelectionEnabled="False" />
</chartingToolkit:Chart>
没有这个SizeValueBinging一切正常,但是在我放置之后没有任何气泡显示出来。我真的把所有想法都用尽了,剩下的就是我已经拥有的一些装配问题。我从MS站点下载了silverlight并添加了“System.Windows.Controls.DataVisualization.Toolkit.dll”参考,之后它仍然无法正常工作(我在wpf中遇到错误)所以我使用了这个“安装 - 包系统”。 Windows.Controls.DataVisualization.Toolkit“命令在包管理器控制台和图表中排序工作,但不是这个SizeValueBinding。
提前感谢您的帮助。
以下是(部分)ViewModel(我知道我应该使用完整属性并使其看起来很漂亮,但它只在一个地方更新,我不需要额外的代码):
NormalViewModel Overwatch { get; set; }
public double[] Lambdas { get; private set; }
public List<KeyVal<string,LStats.Results>> ResultsList { get; private set; }
public double Size { get; set; } = 34;
public class KeyVal<TKey, TVal>
{
public TKey Key { get; set; }
public TVal Val { get; set; }
public KeyVal(TKey Key, TVal Val)
{
this.Key = Key;
this.Val = Val;
}
}
public LSearchViewModel(NormalViewModel Overwatch)
{
this.Overwatch = Overwatch;
}
public override void Simulate()
{
Lambdas = new double[Overwatch.NumOfLambdas];
ResultsList = new List<KeyVal<string, LStats.Results>>();
Action[] mySimulations = new Action[Overwatch.NumOfLambdas];
for (int i = 0; i < Overwatch.NumOfLambdas; i++)
{
Lambdas[i] = Math.Round(Overwatch.Lambda + (Overwatch.NumOfLambdas / 2 - i) * Overwatch.LambdaSpan, 5);
CreateList(i);
var _temp = i;
mySimulations[i] = new Action(() => SetLambda(_temp));
}
Parallel.Invoke(mySimulations);
OnPropertyChanged("Size");
OnPropertyChanged("ResultsList");
}
问题可以标记为已回答。有两个问题:
感谢@jstreet帮助我解决这个问题。