我有一个列表,我绑定到一个TreeView。设置TreeView.DataContext的工作原理 - 一切正常显示。然后我改变列表(向它添加一个项目)并再次设置TreeView.DataContext(到相同的值),但树不会随新项目一起刷新。我如何让树形视图刷新?设置TreeView.DataContext不刷新树
这基本上是我的代码:
public class xItemCollection : ObservableCollection<xItem>
{
}
public class xItem : INotifyPropertyChanged
{
xItemCollection _Items;
string m_Text;
public xItem()
{
_Items = new xItemCollection();
}
public xItemCollection Items {get{return _Items;}}
public string Text {get{return m_Text;} set{m_Text=value;}}
}
class MyProgram
{
xItem m_RootItem;
void UpdateTree()
{
this.RootItem = new xItem();
treeView.DataContext = this;
}
public xItem RootItem
{
get { return m_RootItem;}
set { m_RootItem = value;}
}
}
的XAML是:
<TreeView Name="Tree" ItemsSource="{Binding Path=RootItem.Items}" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Items}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Text}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
添加项目到列表中工作,直到树呈现的第一次。渲染后,添加/删除项目不刷新树。
什么是你的代码中的“this”?那么XAML方面是怎样的呢?你是否将你的hierarchicaldatatemplate设置为正确的? – 2010-05-31 23:48:18
也许RootItem必须是DependencyProperty? – 2010-06-02 23:06:13
因此,在您的UpdateTree方法中,如果在末尾添加: RootItem.Items.Add(new xItem {Text =“new Subitem”}); 它不会显示? – 2010-06-11 10:36:01