我正在使用TreeView和自定義詳細信息視圖控件在我的應用程序中實現主/細節視圖。我也試圖堅持MVVM模式。使用TreeView的主/詳細視圖
現在,TreeView被綁定到包含所有細節的視圖模型對象集合,並且細節視圖綁定到TreeView的選定項目。
這很好...直到其中一個TreeView節點有5,000個孩子,並且應用程序突然佔用了500MB的RAM。
主窗口視圖模型:
public class MainWindowViewModel
{
private readonly List<ItemViewModel> rootItems;
public List<ItemViewModel> RootItems { get { return rootItems; } } // TreeView is bound to this property.
public MainWindowViewModel()
{
rootItems = GetRootItems();
}
// ...
}
項目視圖模型:
public ItemViewModel
{
private readonly ModelItem item; // Has a TON of properties
private readonly List<ItemViewModel> children;
public List<ItemViewModel> Children { get { return children; } }
// ...
}
這裏的細節如何,我結合查看:
<View:ItemDetails DataContext="{Binding SelectedItem, ElementName=ItemTreeView}" />
我是相當新的WPF和MVVM模式,但是我想將TreeView綁定到一個更小,更簡單的對象的集合看起來很浪費,具有顯示該項目所需的屬性(如名稱和ID),然後一旦選擇了它,所有的細節都會被加載。我會如何去做這樣的事情?