'Virtual ListCtrl' 应该如何访问 'Model Data' 来填充它的列表?
How should a 'Virtual ListCtrl' access the 'Model Data' to populate it's list?
我有一个名为 MVC 的 class,它提供分离并充当 wxFrame/UI 和模型数据之间的代理。
class diagram
为简单起见,将MVC作为wxFrame的成员变量。
class MAIN_FRAME: public wxFrame
{
public:
MAIN_FRAME();
public:
MVC MODEL;
};
wxFrame 实现了一个 'virtual wxListCtrl' 来从 MVC 请求列表数据。
但是,我不清楚 'virtual ListCtrl' 访问 MVC 的最佳方式,特别是在请求列表数据的重载函数中。问题在于 MyVirtualListCtrl 与 wxFrame 是分开的,因此没有访问 wxFrame 成员变量 MVC 的范围:
wxString MyVirtualListCtrl::OnGetItemText( long item_, long col_ ) const
{
// If no data then populate list cells with "Empty".
if( this->MVC.empty() )
{
return _( "Empty" ) ;
}
// Use item and column to return the correct data for that particular cell.
// mock solution
>>wxString s = MVC.get_data( item_, col_ );<<
>>return s;<<
}
在构造你的 MyVirtualListCtrl
class 时,你可以给它一个 MAIN_FRAME
的引用,或者,可以说,直接给它 MODEL
的引用,然后直接使用它.正如您可以安全地假设 MAIN_FRAME
(及其模型)将比 MyVirtualListCtrl
长寿,因为当框架本身被销毁时框架子级被销毁,从对象生命周期的角度来看这是安全的。
我有一个名为 MVC 的 class,它提供分离并充当 wxFrame/UI 和模型数据之间的代理。
class diagram
为简单起见,将MVC作为wxFrame的成员变量。
class MAIN_FRAME: public wxFrame
{
public:
MAIN_FRAME();
public:
MVC MODEL;
};
wxFrame 实现了一个 'virtual wxListCtrl' 来从 MVC 请求列表数据。
但是,我不清楚 'virtual ListCtrl' 访问 MVC 的最佳方式,特别是在请求列表数据的重载函数中。问题在于 MyVirtualListCtrl 与 wxFrame 是分开的,因此没有访问 wxFrame 成员变量 MVC 的范围:
wxString MyVirtualListCtrl::OnGetItemText( long item_, long col_ ) const
{
// If no data then populate list cells with "Empty".
if( this->MVC.empty() )
{
return _( "Empty" ) ;
}
// Use item and column to return the correct data for that particular cell.
// mock solution
>>wxString s = MVC.get_data( item_, col_ );<<
>>return s;<<
}
在构造你的 MyVirtualListCtrl
class 时,你可以给它一个 MAIN_FRAME
的引用,或者,可以说,直接给它 MODEL
的引用,然后直接使用它.正如您可以安全地假设 MAIN_FRAME
(及其模型)将比 MyVirtualListCtrl
长寿,因为当框架本身被销毁时框架子级被销毁,从对象生命周期的角度来看这是安全的。