0

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 軸は電力です。

うまく説明できたと思います。

4

1 に答える 1

0

実際、私の Wpf-toolkit / charting の実験を皆さんと共有するには、これをディスクにインストールしなければよかったのにと思います。
で行く方が速かったでしょう:

  1. キャンバス。(または古き良きグリッドでさえ)。
  2. オブジェクトの 1 つまたは複数の DataTemplates。
  3. スケーリングを処理するコントローラー オブジェクト (必要な場合)。
  4. 次に、キャンバス内の ItemControl を ObservableCollection にバインドします。

結局のところ、棒グラフは、スタイルが設定された長方形の集まりにすぎません...

私のアドバイス: Wpf ツールキットは避けてください。文書化されていません。たとえば、色をどのように処理するかなど、明確なアイデアを得ることができません。フォーラムのチュートリアル/回答の中には、オブジェクトを検査するときに適用できないものがあります。仕様は何度も変更されています。
したがって、チャートのプリセットはあなたに合っていて、それを選びますが、コンポーネントを自由に設計したい場合は、自分で、または文書化された/動作するライブラリを選択することをお勧めします.

あなたが別のライブラリに行くなら、私はあなたをこれ以上助けることはできません: 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>
于 2012-12-15T10:22:06.297 に答える