WPF ChartingToolkit SizeValue不起作用

时间:2016-04-12 20:36:00

标签: c# wpf silverlight charts

我在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");
    }

问题可以标记为已回答。有两个问题:

  • 看来我必须使用SizeValuePath并将其“绑定”到列表项的属性。
  • 气泡的大小不能是绝对的,这个尺寸值路径的作用就是设置不同气泡之间的比例值。

感谢@jstreet帮助我解决这个问题。

0 个答案:

没有答案
相关问题