-2
我在XAML文件樹形視圖這樣的:爲什麼需要ItemsSource是一個列表?
<TreeView ItemsSource="{Binding Items}" Margin="0,0,5,5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type ViewModels:NodeViewModel}" ItemsSource="{Binding Path=Descendants}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Node.Name}}" FontWeight="Bold"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我的視圖模型具有這個屬性:
private List<NodeViewModel> _items = new List<NodeViewModel>();
public List<NodeViewModel> Items
{
get { return _items; }
set
{
_items = value;
base.RaisePropertyChangedEvent("Items");
}
}
這工作得很好,但II已經注意到了,列表項目始終只一個元素,根項目和樹是通過遍歷子元素創建的。所以,我嘗試將屬性更改爲這樣:
private NodeViewModel _rootItem;
public List<NodeViewModel> RootItem
{
get { return _rootItem; }
set
{
_rootItem= value;
base.RaisePropertyChangedEvent("RootItem");
}
}
但這種方式的樹沒有顯示。
那麼,樹視圖的itemsSource必須是一個列表?爲什麼如果我總是隻有一個元素在列表中,這是根項目?
TreeView的'ItemsSource'必須是'IEnumerable',僅僅因爲一個'TreeView'是一個'ItemsControl',它的行爲就像處理它的'ItemsSource'的任何其他'ItemsControl'一樣。 – 2015-01-09 20:17:25