1

データ ログ アプリケーション用のテキスト ファイルからさまざまな値のリストを読み込んでいます。私の最終目標は、各値の列を持つデータ グリッドを作成することです。これが私がやろうとしていることの基本的な概要です...

1.) テキスト ファイルが読み込まれ、新しい dataFile クラスが作成されます。このクラスは、テキスト ファイル内のさまざまな列を解析し、変数ごとに float のリストを作成します。

2.) dataFile クラスには、これらの各リストを返すメソッドが含まれています。

3.) これらのリストをデータ グリッドに追加したいのですが、その方法に関する情報を見つけることができませんでした。

例: 次のコード行を使用して、1 つの列を埋めることができます...

dataGrid1.ItemsSource = runOne.getRPM();

runOne は fataFile で、getRPM() は float のリストを返します。

複数のリストでこれを実行しようとすると、たとえば

 dataGrid1.ItemsSource = runOne.getRPM();
 dataGrid1.ItemsSource = runOne.getPower();

dataGrid の最初の列のみが入力されます。私はすでにdataGridの列を作成しており、以下はXAMLコードです...

<DataGrid AutoGenerateColumns="False" Height="305" HorizontalAlignment="Left"   Margin="153,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="454">
        <DataGrid.Columns>
            <DataGridTextColumn Header="RPM" />
            <DataGridTextColumn Header="Flywheel Torque" />
            <DataGridTextColumn Header="TorqM" />
            <DataGridTextColumn Header="TorqS" />
            <DataGridTextColumn Header="Power (HP)" />
            <DataGridTextColumn Header="Flywheel Power" />
            <DataGridTextColumn Header="Temp" />
        </DataGrid.Columns>
    </DataGrid>

個々のリストの項目に基づいて各列を埋める方法はありますか? すべてのリスト (リストのリスト) を返すメソッドを作成し、それを機能させようとしましたが、機能しませんでした。

提案/アイデアは大歓迎です。

4

1 に答える 1

0

RPM と Power ( ) の 2 つのプロパティを持つ新しいクラスで監視可能なコレクションを作成して入力してみてくださいObservableCollection<RpmPower>。その後、グリッドを新しいコレクションにバインドできます。

using System;
using System.Collections.Generic;
using System.ComponentModel;

namespace Test
{
    public class RpmPowerModel : INotifyPropertyChanged
    {
        #region Properties

        public int Rpm
        {
            get { return _rpm; }
            set
            {
                if (_rpm != value)
                {
                    _rpm = value;
                    RaisePropertyChanged("Rpm");
                }
            }
        }

        private int _rpm;

        public int Power
        {
            get { return _power; }
            set
            {
                if (_power != value)
                {
                    _power = value;
                    RaisePropertyChanged("Power");
                }
            }
        }

        private int _power;

        #endregion

        #region Implementation of INotifyPropertyChanged

        public event PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }

        #endregion

        public static List<RpmPowerModel> LoadItems(List<int> rpms, List<int> powers)
        {
            if (rpms == null)
            {
                throw new ArgumentNullException("rpms");
            }

            if (powers == null)
            {
                throw new ArgumentNullException("powers");
            }

            var result = new List<RpmPowerModel>(Math.Max(rpms.Count, powers.Count));

            for (int i = 0; i < Math.Max(rpms.Count, powers.Count); i++)
            {
                var model = new RpmPowerModel
                {
                    Rpm = i < rpms.Count ? rpms[i] : 0,
                    Power = i < powers.Count ? powers[i] : 0
                };

                result.Add(model);
            }

            return result;
        }
    }
}
于 2013-03-28T16:04:10.190 に答える