1

ファイルにがありchartingToolKit、ファイルの間隔を静的ではなく動的にXAML設定したいと考えています。これは私が今それを行う方法です:LinearAxisXAML

<chartingToolkit:ColumnSeries.DependentRangeAxis>
    <chartingToolkit:LinearAxis FontSize="15" Foreground="Black" Interval="1"  Minimum="0" Orientation="Y" ShowGridLines="False" />
</chartingToolkit:ColumnSeries.DependentRangeAxis>

私はバインディングでこのようにしようとしました:

<chartingToolkit:ColumnSeries.DependentRangeAxis>
    <chartingToolkit:LinearAxis FontSize="15" Foreground="Black" Interval="{Binding ChartingInterval}"  Minimum="0" Orientation="Y" ShowGridLines="False" />
</chartingToolkit:ColumnSeries.DependentRangeAxis>

次のように、.cs ファイル内のプロパティ ChartingInterval へのバインディング参照:

public int ChartingInterval
{
    get
    {
        //Should contain more logic, obvious.
        return 1;    
    } 
} 

しかし、これは正しく機能していないようです。どうすればこれを達成できますか?

どうもありがとう!

4

2 に答える 2

1

これは、プロパティ「ChartingInterval」を持つオブジェクトにデータコンテキストが設定されていないためだと思います。

次のように設定するだけです。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:chartingToolkit="..."
        Title="MainWindow" Height="350" Width="525"
        DataContext="{Binding RelativeSource={RelativeSource Mode=Self}}">
    ...
    <chartingToolkit:ColumnSeries.DependentRangeAxis>
        <chartingToolkit:LinearAxis FontSize="15" Foreground="Black" Interval="{Binding ChartingInterval}"  Minimum="0" Orientation="Y" ShowGridLines="False" />
    </chartingToolkit:ColumnSeries.DependentRangeAxis>
    ...
</Window>

INotifyPropertyChanged を実装して、値が変更されたことをプロパティがバインディングに通知できるようにする必要があります。これにより、バインディングはターゲット値を更新します。

私の英語でごめんなさい

于 2012-12-19T22:28:22.270 に答える
0

これは、線系列の C# でグラフを動的にリセットするコードです。不要な行を置き換えLineSeriesて削除するだけです。ColumnSeries名前も自分のものに置き換えますDataContext。スタイルは XAML windows.resource で自分のものなので、削除できます。おそらく、これは C# コードを開始するのに役立ちます。

//dynamically recreate the chart series1
private void AddSeries()
{
    var series1 = new LineSeries();
    series1.SetBinding(LineSeries.ItemsSourceProperty, new Binding());
    series1.DataContext = Power;
    series1.DependentValueBinding = new Binding("Value");
    series1.IndependentValueBinding = new Binding("Key");
    series1.Style = (Style)this.Resources["LineSeriesStyle1"];

    //set initial values:
    LinearAxis independentaxis = new LinearAxis();
    independentaxis.Orientation = AxisOrientation.X;
    independentaxis.ShowGridLines = true;
    independentaxis.Maximum = 60;
    independentaxis.Minimum = 0;
    independentaxis.Title = "Time";
    independentaxis.ShowGridLines = true;
    series1.IndependentAxis = independentaxis;

    //set initial values:
    LinearAxis dependentaxis = new LinearAxis();
    dependentaxis.Orientation = AxisOrientation.Y;
    dependentaxis.ShowGridLines = true;
    dependentaxis.Maximum = 600;
    dependentaxis.Minimum = 0;
    dependentaxis.Title = "Force(n)";
    dependentaxis.ShowGridLines = true;
    series1.DependentRangeAxis = dependentaxis;
    chart1.Series.Add(series1);
}
于 2015-09-23T14:39:30.483 に答える