Хранить заголовки строк и столбцов в формате NumPy

У меня есть numpy 2-мерный массив numpy, который содержит ежедневные цены акций для нескольких акций. Например,

daily_prices = np.array([  
    [4,3,3,1],  
    [5,4,3,6],  
    [6,3,2,7],  
    [3,9,7,4],  
    [8,4,6,3],  
    [8,3,3,9]])  

, где каждая строка - это другая дата, а каждый столбец - это разные акции.

Я хотел бы иметь возможность хранить в массиве (или что-то более подходящее), Каждый раз, когда это свойство обновляется, мне нужно запускать другое событие. Для этого я добавил ...

У меня есть пользовательский элемент управления, который предоставляет DependencyProperty под названием VisibileItems Каждый раз, когда это свойство обновляется, мне нужно запускать другое событие. Для этого я добавил FrameworkPropertyMetadata с событием PropertyChangedCallback.

По какой-то причине это событие вызывается только один раз и не запускается при следующем изменении VisibleItems.

XAML:

<cc:MyFilterList VisibleItems="{Binding CurrentTables}"  />

CurrentTables - это DependencyProperty на MyViewModel. CurrentTables часто меняется. Я могу привязать другой элемент управления WPF к CurrentTables, и я вижу изменения в пользовательском интерфейсе.

Вот как я связал VisibleItems с PropertyChangedCallback

public static readonly DependencyProperty VisibleItemsProperty =
    DependencyProperty.Register(
    "VisibleItems",
    typeof(IList),
    typeof(MyFilterList),
    new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender, new PropertyChangedCallback(VisiblePropertyChanged))

    );

public IList VisibleItems {
    get { return (IList)GetValue(VisibleItemsProperty); }
    set { SetValue(VisibleItemsProperty, value); }
}

, войдя в VisiblePropertyChanged, я вижу, что он срабатывает при первой установке CurrentTables. но не в последующие разы.

UPDATE

, поскольку некоторые из вас задались вопросом о том, как модифицируется CurrentTables, он полностью переназначается при изменении:

OnDBChange()...
CurrentTables = new List<string>(MainDatabaseDataAdapter.GetTables(this.SelectedServer, this.SelectedDatabase));

эта строка вызывается при каждом изменении, но мой обработчик VisiblePropertyChanged вызывается только в первый раз.

UPDATE

, если я назначаю VisibleItems напрямую, обработчик вызывается каждый раз!

TestFilterList.VisibleItems = new List<string>( Enumerable.Range(1, DateTime.Now.Second).ToList().Select(s => s.ToString()).ToList() );

Итак, похоже, что проблема связана с DependencyProperty (VisibleItems), наблюдающим за другим DependencyProperty (CurrentTables). Каким образом привязка работает при первом изменении свойства, а не при последующих? Попытка изучить эту проблему с помощью Snoop, как предлагали некоторые из вас.

10
задан Sonic Soul 27 April 2011 в 14:51
поделиться