我正在尝试将对象(从db获取)绑定到树视图控件。
我的对象结构是这样的事情:
public class Post
{
[DataMember]
public string Name { set; get; }
[DataMember]
public List<Post> SubPosts { get; set; }
}
我定义了一个从db获取数据的方法,并将其放在我的类的属性中:
我的财产:
private Post _posts;
public Post Posts
{
set
{
_posts = value;
InvokePropertyChanged("Posts");
}
get { return _posts; }
}
然后
Posts = _orgChartModel.GetOrgChartByParentId(1);
现在,我想将“帖子”属性绑定到树视图。
XAML代码:
<sdk:TreeView ItemsSource="{Binding Posts}">
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=SubPosts}" >
<StackPanel >
<Image Width="48" Height="48"
Source="/CalendarClass;component/Assets/person.png" />
<TextBlock TextAlignment="Center" VerticalAlignment="Center"
Text="{Binding Path=Name}" />
</StackPanel>
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
我的代码不起作用,出了什么问题?
答案 0 :(得分:1)
TreeView的ItemSource属性需要一种IEnumerable。你绑定到一个帖子,这就是为什么它不起作用。将您的帖子绑定属性更改为帖子集合:
private ObservableCollection<Post> _posts;
public ObservableCollection<Post> Posts
{
set
{
_posts = value;
InvokePropertyChanged("Posts");
}
get { return _posts; }
}
然后初始化你的绑定属性,以防视图没有提取帖子改变,再次绑定你的树视图:
Posts = new ObservableCollection<Post>();
var post = _orgChartModel.GetOrgChartByParentId(1);
Posts.Add(post);
treeView.ItemsSource = Posts; //or whatever the name of your TreeView control is.