带图例复选框的动态数据显示图表(WPF)

时间:2013-04-30 17:36:46

标签: wpf legend dynamic-data-display

我正在尝试在以下链接http://research.microsoft.com/en-us/um/cambridge/projects/ddd/d3isdk/

中重新创建Miscellanous下的“Line Graph legend”示例

我使用WPF而不是silverligth,并且在获取以下XAML部分的引用时遇到问题。

 <d3:Chart.LegendContent>
    <d3:LegendItemsPanel>
        <d3:LegendItemsPanel.Resources>
            <DataTemplate x:Key="Microsoft.Research.DynamicDataDisplay.LineGraph">
                <StackPanel Orientation="Horizontal">
                    <CheckBox IsChecked="{Binding Path=Visibility, Converter={StaticResource VisibilityToCheckedConverter}, Mode=TwoWay}"/>
                    <Line Width="15" Height="15" X1="0" Y1="0" X2="15" Y2="15" Stroke="{Binding Path=Stroke}" StrokeThickness="2"/>
                    <TextBlock Margin="5,0,0,0" Text="{Binding Path=Description}"/>
                </StackPanel>
            </DataTemplate>
        </d3:LegendItemsPanel.Resources>
    </d3:LegendItemsPanel>
</d3:Chart.LegendContent>

由于

2 个答案:

答案 0 :(得分:2)

从D3开始时我也遭遇了同样的困惑。据我所知,它最初是为WPF开发的,然后用作跳板在Silverlight中构建相同的功能。因此,您在网上看到的示例有一些差异和一些您在WPF版本中看不到的其他功能。

首先,WPF版本中不存在“Chart”类。您更有可能在图表中使用“ChartPlotter”。与“Legend”和“LineLegendItem”相同,而不是“LegendContent”和“LegendItemsPanel”。这可能是你要去的地方:

<d3:ChartPlotter>
    <d3:Legend>
        <d3:LineLegendItem>
            <d3:LineLegendItem.Resources>
                <DataTemplate StackPanel with checkbox>
            </d3:LineLegendItem.Resources>
        </d3:LineLegendItem>
    </d3:Legend>
</d3:ChartPlotter>

我没有亲自使用这些课程,所以我没有第一手资料知道这与Silverlight示例相符,但我希望这足以让你开始尝试。

我强烈建议您查看下载on the official D3 page中的示例。我最近发现你可以查看他们样本背后的代码,这些代码很烦人,不会包含在下载中online here。 (稳定&gt; v0.3.1&gt; src&gt;样品,找到您要检查的样品。)

我看不到那里有你在图例中有一个复选框的确切示例,但是一旦你开始访问正确的类,你的方法似乎应该有效。

另外,我假设您使用以下行,而不是Silverlight,以引用该库:

xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"

答案 1 :(得分:0)

您将在这里使用示例: https://github.com/Microsoft/InteractiveDataDisplay.WPF/tree/master/samples/LineGraphSample

交互式数据显示是D3的延续(无论如何,其中之一)。但是某些C#可能有所不同。