Привязка таблицы к подчиненному свойству - PullRequest
1 голос
/ 28 января 2012

Для этого уже есть пара ответов, но я не смог найти ничего убедительного. Вот суть того, что я пытаюсь сделать:

EquityInstrument

public class EquityInstrument : INotifyPropertyChanged
{
    private string _Symbol;
    public string Symbol
    {
        get
        {
            return _Symbol;
        }
        set
        {
            _Symbol = value;
            OnPropertyChanged("Symbol");
        }
    }

    public EquityInstrument(string Symbol)
    {
        this.Symbol = Symbol;
    }


    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string FieldName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(FieldName);
        }
    }
}

OptionInstrument

public class OptionInstrument : INotifyPropertyChanged;
{
    public readonly EquityInstrument UnderlyingInstrument;

    private double _StrikePrice;
    public double StrikePrice
    {
        get
        {
            return _StrikePrice;
        }
        set
        {
            _StrikePrice = value;
            OnPropertyChanged("StrikePrice");
        }
    }

    private DateTime _Expiration;
    public DateTime Expiration;
    {
        get
        {
            return _Expiration;
        }
        set
        {
            _Expiration = value;
            OnPropertyChanged("Expiration");
        }
    }

    public OptionInstrument(string Symbol, double StrikePrice, DateTime Expiration)
    {
        this.Symbol = Symbol;
        this.StrikePrice = StrikePrice;
        this.Expiration = Expiration;
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string FieldName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(FieldName);
        }
    }
}

Этот код инициирует таблицу параметров ...

GridControl OptionGrid = new GridControl();
BindingList<OptionInstrument> BoundList = new BindingList<OptionInstrument>();

public void InitializeDataTable()
{
    OptionGrid.DataSource = new BindingSource() { DataSource = BoundList };

    BandedGridColumn Column0 = new BandedGridColumn();
    Column0.FieldName = "Symbol";

    BandedGridColumn Column1 = new BandedGridColumn();
    Column1.FieldName = "StrikePrice";

    BandedGridColumn Column2 = new BandedGridColumn();
    Column2.FieldName = "Expiration";

    BandedGridView MainView = (BandedGridView)OptionGrid.MainView;

    MainView.Columns.Add(Column0);
    MainView.Columns.Add(Column1);
    MainView.Columns.Add(Column2);

    BoundList.Add(new OptionInstrument("DELL", 12.22, new DateTime(2012, 10, 12));
    BoundList.Add(new OptionInstrument("MSFT", 13.23, new DateTime(2012, 09, 16));
    BoundList.Add(new OptionInstrument("SPY", 12.23, new DateTime(2012, 07, 18));
}

Что ты думаешь? Есть ли хорошие шаблоны проектирования для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...