2

我在 C# 中生成了多个列系列图表。我正在进一步尝试使用复选框获取此图表的图例。这样图表仅显示选中的图例项的列系列。

我需要在后面的 C# 代码中而不是在 HTML 中执行此操作。我有以下创建多个动态列系列的现有代码 -

foreach (KeyValuePair<int, string> item in list)
{
  foreach (System.Data.DataRow dRow in dtTable.Rows)
  {
      <formation of listSource>
  }

  ColumnSeries ser = new ColumnSeries { Title = item.Value, IndependentValueBinding = new Binding("Key"), DependentValueBinding = new Binding("Value") };
          ser.ItemsSource = null;
          ser.ItemsSource = listSource;
          ser.DataPointStyle = columnStyleBrown;
          mcChart.Series.Add(ser);
          i++;
      }
}

我还想补充一点——

ser.LegendItemStyle =

所以我需要知道如何用 c# 中的复选框创建图例样式。

可以有两种方法来实现这一点-

  1. 通过修改现有图例以包含复选框(首选)
  2. 或者干脆创造一个新的传奇

有人可以帮忙吗?

提前致谢!

4

1 回答 1

2

能够解决这个问题 -

xml代码 -

<Grid Name="LayoutRoot">
<Grid.Resources>

    <Style x:Key="CategoryLegendItem" TargetType="DVC:LegendItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="DVC:LegendItem">
                    <StackPanel Orientation="Horizontal">
                        <CheckBox VerticalAlignment="Center" IsChecked="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Owner.Visibility, Mode=TwoWay, Converter={StaticResource BooleanToVisibilityConverter1}}" Margin="0,0,3,0" />
                        <Rectangle Width="8" Height="8" Fill="{Binding Background}" Stroke="{Binding BorderBrush}" StrokeThickness="1" Margin="0,0,3,0" />
                        <DV:Title VerticalAlignment="Center" Content="{TemplateBinding Content}" />
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Grid.Resources>
<DVC:Chart Name="mcChart"  >
</DVC:Chart>

动态列系列的相关C#代码——

ColumnSeries ser = new ColumnSeries { Title = kvpNuclide.Value, IndependentValueBinding = new Binding("Key"), DependentValueBinding = new Binding("Value") };
                ser.ItemsSource = null;
                ser.ItemsSource = listRelease;
                ser.DataPointStyle = columnStyleAqua;
                ser.LegendItemStyle = (Style)LayoutRoot.Resources["CategoryLegendItem"];
                mcChart.Series.Add(ser);
于 2013-10-09T07:34:37.043 回答