WPF:图中的宽度列

时间:2012-12-15 08:27:39

标签: c# wpf graph charts

我写作是因为我遇到了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轴是功率。

我希望我已经解释得很清楚。

1 个答案:

答案 0 :(得分:0)

事实上,与我分享我的Wpf-toolkit / charting实验:我希望我从来没有在我的磁盘上安装过它。
它会更快:

  1. 画布。 (或者甚至是一个好的老网格)。
  2. 对象的一个​​或多个DataTemplates。
  3. 处理缩放的控制对象(如果需要)。
  4. 然后是Canvas中的ItemControl,绑定到ObservableCollection。
  5. 毕竟,条形图只不过是一组风格的矩形......

    我的建议:避免使用Wpf工具包,但没有记录。例如,如何根据需要处理颜色是不可能的。在检查对象时,论坛上的一些教程/答案根本无法应用:规格改变了很多次 因此,无论是图表的预设都适合你,还是去寻找它,但如果你想自由地设计你的组件,那么你自己或者选择一个有文档/工作的lib会更好。

    如果你去另一个lib,我无法帮助你:Google是你的朋友,
    如果你想自己做,我很快就这样做了,让你开始:

    snapshot of the bar-graph example

    <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>