0
我在樹視圖的執行中缺少什麼? 這是什麼東西看: mvvm treeview不綁定視圖模型
查看:
<TreeView Style="{StaticResource ExpandAllStyle}" ItemsSource="{Binding Titles}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type vm:TitleViewModel}">
<Grid ShowGridLines="False">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=DisplayedStartTime}" Margin="0,0,10,0" />
<TextBlock Grid.Column="1" Text="" />
<TextBlock Grid.Column="2" Text="{Binding Path=Text}" />
</Grid>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我的倉庫:
public class TitleRepository : INotifyPropertyChanged
{
#region Titles
private ObservableCollectionEx<Title> _titles;
public ObservableCollectionEx<Title> Titles
{
get { return _titles; }
set
{
_titles = value;
OnPropertyChanged(new PropertyChangedEventArgs("Titles"));
}
}
#endregion
#region Current Title
private Title _currentTitle;
public Title CurrentTitle
{
get { return _currentTitle; }
set { _currentTitle = value; }
}
#endregion
public TitleRepository()
{
_titles = new ObservableCollectionEx<Title>();
_titles.Add(new Title("This is a title test"));
}
和我的視圖模型: MainTreeViewModel:
public class MainTreeViewModel : ViewModelBase
{
private readonly TitleRepository _titleRepository;
private ObservableCollection<TitleViewModel> _titles;
public ObservableCollection<TitleViewModel> Titles
{
get { return _titles; }
set { _titles = value; }
}
public MainTreeViewModel()
{
_titleRepository = ((App)Application.Current).TitleRepository;
_titleRepository.Titles.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Titles_CollectionChanged);
_titles = new ObservableCollection<TitleViewModel>(
(from t in _titleRepository.Titles
select new TitleViewModel(t)).ToList());
}
void Titles_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
_titles.Add(new TitleViewModel(_titleRepository.Titles[_titleRepository.Titles.Count - 1]));
}
TitleViewModel:
public class TitleViewModel : ViewModelBase
{
readonly Title _title;
#region Displayed Start Time
public string DisplayedStartTime
{
get { return _title.DisplayedStartTime; }
}
#endregion
#region Text
public string Text
{
get { return _title.Text; }
}
#endregion
public TitleViewModel(Title title)
{
_title = title;
}
我視圖模型綁定在View.cs:
MainTreeViewModel vm = new MainTreeViewModel();
this.DataContext = vm;
我希望看到的標題是「這是一個磚試驗」,我在倉庫中填充。 它是一個動態樹。
您的意思是「ObservableCollectionEx標題」而不是'ObservableCollectionEx 標題?如果沒有,你的'Title'類是否有'Text'屬性? –
2012-06-02 05:44:46
是我修改ObservableCollectionEx。 爲我想創建一個視圖模型的每個標題對象。 –
kaycee