我写作是因为我遇到了wpf及其图形问题。 基本上,我想创建一个柱形图。我的问题是我无法设置列的宽度。在互联网上,我只看到了固定宽度的列的例子。
我的XAML代码是这样的:
<Grid Height="871" Width="572">
<chartingToolkit:Chart Height="337" HorizontalAlignment="Left" Margin="65,0,0,496" Name="columnChart" Title="Column Series Demo" VerticalAlignment="Bottom" Width="440">
<chartingToolkit:Chart.Axes>
<chartingToolkit:LinearAxis Title="Wireless Power" Orientation="Y" Interval="100" />
<chartingToolkit:LinearAxis Title="Time" Orientation="X" Interval="100" />
</chartingToolkit:Chart.Axes>
<chartingToolkit:ColumnSeries Name="myGraph" IndependentValuePath="Key" ItemsSource="{Binding}" AnimationSequence="FirstTo"/>
</chartingToolkit:Chart>
</Grid>
背后的代码是:
private void showColumnChart(){
List<KeyValuePair <int, int>> valueList = new List<KeyValuePair<int, int>>();
valueList.Add(new KeyValuePair<int, int>(12, 55));
valueList.Add(new KeyValuePair<int, int>(15, 60));
columnChart.DataContext = valueList;
}
现在,我的目的是在白天代表我的无线功能。但是有时候你没有连接,那么电源就没什么了,或者有时候,例如,从晚上7点到晚上8点,信号强度等于-78db。我以前收集过数据库,现在我想代表他们。所以我的目标是,例如,考虑到24小时的时间间隔,将条形图放在图表上,其中x轴是无线功率的检测时间,而y轴是功率。
我希望我已经解释得很清楚。
答案 0 :(得分:0)
事实上,与我分享我的Wpf-toolkit / charting实验:我希望我从来没有在我的磁盘上安装过它。
它会更快:
毕竟,条形图只不过是一组风格的矩形......
我的建议:避免使用Wpf工具包,但没有记录。例如,如何根据需要处理颜色是不可能的。在检查对象时,论坛上的一些教程/答案根本无法应用:规格改变了很多次 因此,无论是图表的预设都适合你,还是去寻找它,但如果你想自由地设计你的组件,那么你自己或者选择一个有文档/工作的lib会更好。
如果你去另一个lib,我无法帮助你:Google是你的朋友,
如果你想自己做,我很快就这样做了,让你开始:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:WpfApplication1"
Title="MainWindow"
Width="525"
Height="350"
Loaded="Window_Loaded">
<Window.Resources>
<DataTemplate DataType="{x:Type l:Datata}">
<Rectangle Width="10"
Height="{Binding SomeValue}"
VerticalAlignment="Bottom"
Margin="10,0"
Fill="Black" />
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="10" />
</Grid.RowDefinitions>
<!-- Vertical Axis -->
<Path Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
Stretch="Fill"
Stroke="Black"
StrokeThickness="2">
<Path.Data>
<LineGeometry StartPoint="0,0" EndPoint="0,1" />
</Path.Data>
</Path>
<!-- Horizontal axis -->
<Path Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Stretch="Fill"
Stroke="Black"
StrokeThickness="2">
<Path.Data>
<LineGeometry StartPoint="0,0" EndPoint="1,0" />
</Path.Data>
</Path>
<StackPanel Orientation="Horizontal" Margin="0,5" >
</StackPanel>
<ItemsControl Grid.Row="0" Grid.Column="1" ItemsSource="{Binding AllValues}" VerticalAlignment="Bottom">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
</Window>