许多人不会设置的主要原因是XYDiagram2D.DefaultPane 中DomainBrush和DomainBorderBrush的设置。下面是xaml的一个实例:
<UserControl x:Class="myGisSilverlight.Tool.SilverlightControl2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<dxc:ChartControl Name="ChartSwarm" Width="150" Height="150" Background="{x:Null}">
<dxc:ChartControl.Diagram>
<dxc:XYDiagram2D BorderBrush="{x:Null}">
<dxc:XYDiagram2D.DefaultPane>
<dxc:Pane DomainBrush="{x:Null}" BorderBrush="{x:Null}" DomainBorderBrush="{x:Null}" />
</dxc:XYDiagram2D.DefaultPane>
<dxc:XYDiagram2D.AxisY>
<dxc:AxisY2D Visible="False" Interlaced="False" GridLinesVisible="False" />
</dxc:XYDiagram2D.AxisY>
<dxc:XYDiagram2D.AxisX>
<dxc:AxisX2D Visible="False" Interlaced="False" GridLinesVisible="False"/>
</dxc:XYDiagram2D.AxisX>
<dxc:XYDiagram2D.Series>
<dxc:BubbleSeries2D x:Name="Series"></dxc:BubbleSeries2D>
</dxc:XYDiagram2D.Series>
</dxc:XYDiagram2D>
</dxc:ChartControl.Diagram>
</dxc:ChartControl>
</Grid>
</UserControl>
程序的设置方法:
#region 创建柱状图
private ChartControl createXY2DDiagram(List<Dictionary<string,string>> datas)
{
ChartControl chartCtl = new ChartControl();
//chartCtl.Height = map.ActualHeight / 10;
//chartCtl.Width = map.ActualWidth / 10;
//chartCtl.MaxHeight = 80;
//chartCtl.MaxWidth = 65;
chartCtl.Height = 150;
chartCtl.Width = 100;
chartCtl.BorderBrush = null;
chartCtl.Background = null;
XYDiagram2D xy2d = new XYDiagram2D();
//xy2d.BarDistance = 0.1;
xy2d.EqualBarWidth = true;
//xy2d.BorderBrush = null;
//xy2d.BorderThickness = new Thickness(0);
xy2d.Background = null;
xy2d.BorderBrush = null;
Pane pane = new Pane();
pane.DomainBrush = null;
pane.DomainBorderBrush = null;
xy2d.DefaultPane = pane;
setXY(xy2d);
BarSideBySideSeries2D tmpSeries = null;
string value="";
foreach (Dictionary<string, string> data in datas)
{
value=data["Value"];
if (value.Trim() == ""||value.Contains("-"))
continue;
tmpSeries = createSeries(data["Argument"], double.Parse(value));
xy2d.Series.Add(tmpSeries);
}
chartCtl.Diagram = xy2d;
return chartCtl;
}
private void setXY(XYDiagram2D xy2d)
{
xy2d.AxisX = new AxisX2D();
xy2d.AxisX.Visible = false;
xy2d.AxisX.Interlaced = false;
xy2d.AxisX.GridLinesVisible = false;
//xy2d.AxisX.GridLinesVisible = false;
//xy2d.AxisX.InterlacedBrush = new SolidColorBrush(Colors.Transparent);
xy2d.AxisY = new AxisY2D();
xy2d.AxisY.Visible = false;
xy2d.AxisY.Interlaced = false;
xy2d.AxisY.GridLinesVisible = false;
}
private BarSideBySideSeries2D createSeries(string argument,double value)
{
BarSideBySideSeries2D tmp = new BarSideBySideSeries2D();
//tmp.BarWidth = 20;
//tmp.DisplayName = argument;
//tmp.ToolTipPointPattern = argument+":"+value.ToString();
//tmp.ToolTipPointPattern = value.ToString();
//tmp.AnimationAutoStartMode = AnimationAutoStartMode.SetStartState;
tmp.CrosshairLabelVisibility = false;
tmp.Model = new Quasi3DBar2DModel();
tmp.Label = new SeriesLabel();
tmp.LabelsVisibility = false;
SeriesLabel sl = new SeriesLabel();
SeriesPoint sp = new SeriesPoint();
sp.Argument = argument;
sp.Value = value;
tmp.Points.Add(sp);
return tmp;
}
#endregion
最后,看效果(专题图分析)