1
的載荷種類目前,我有這樣的代碼(走向深沉= 2個類別)想要做遞歸,在undercategory
private void Window_Loaded(object sender, RoutedEventArgs e)
{
foreach (Kategorie kategorie in mainViewModel.Kategorien)
{
if (kategorie.Oberkategorie == null)
{
TreeViewItem newChild = new TreeViewItem();
newChild.Header = kategorie.Bezeichnung;
treeView.Items.Add(newChild);
foreach (Kategorie unterkategorie in mainViewModel.Kategorien)
{
if (unterkategorie.Oberkategorie != null)
{
if (unterkategorie.Oberkategorie.Id == kategorie.Id)
{
TreeViewItem subItem = new TreeViewItem();
subItem.Header = unterkategorie.Bezeichnung;
newChild.Items.Add(subItem);
}
}
}
}
}
}
我想作一個遞歸方法,在那裏我可以在undercategories N類和等等,我想喜歡的東西:
foreach (Kategorie kategorie in mainViewModel.Kategorien)
{
FillKategorienTreeView(kategorie);
}
然後:
private void FillKategorienTreeView(Kategorie kategorie)
{
//if (kategorie.Oberkategorie == null)
//{
// TreeViewItem newChild = new TreeViewItem();
// newChild.Header = kategorie.Bezeichnung;
// treeView.Items.Add(newChild);
//}
//else
//{
// if (kategorie.Oberkategorie.Id == kategorie.Id)
// {
// TreeViewItem subItem = new TreeViewItem();
// subItem.Header = kategorie.Bezeichnung;
// newChild.Items.Add(subItem);
// }
//}
}
等similiar東西,它沒有工作,我對遞歸不太友善,但在這種情況下,它是不可或缺的。
有一個樹視圖,它有一個TopLevel(Maincategory),並且可以有n個子/子類別。
希望u能幫助我
編輯:類別對象:
[DataMember]
public int Id
{
get { return _id; }
set
{
if (_id != value)
{
if (ChangeTracker.ChangeTrackingEnabled && ChangeTracker.State != ObjectState.Added)
{
throw new InvalidOperationException("The property 'Id' is part of the object's key and cannot be changed. Changes to key properties can only be made when the object is not being tracked or is in the Added state.");
}
_id = value;
OnPropertyChanged("Id");
}
}
}
private int _id;
[DataMember]
public string Bezeichnung
{
get { return _bezeichnung; }
set
{
if (_bezeichnung != value)
{
_bezeichnung = value;
OnPropertyChanged("Bezeichnung");
}
}
}
private string _bezeichnung;
#endregion
#region Navigation Properties
[DataMember]
public TrackableCollection<Artikel> Artikel
{
get
{
if (_artikel == null)
{
_artikel = new TrackableCollection<Artikel>();
_artikel.CollectionChanged += FixupArtikel;
}
return _artikel;
}
set
{
if (!ReferenceEquals(_artikel, value))
{
if (ChangeTracker.ChangeTrackingEnabled)
{
throw new InvalidOperationException("Cannot set the FixupChangeTrackingCollection when ChangeTracking is enabled");
}
if (_artikel != null)
{
_artikel.CollectionChanged -= FixupArtikel;
}
_artikel = value;
if (_artikel != null)
{
_artikel.CollectionChanged += FixupArtikel;
}
OnNavigationPropertyChanged("Artikel");
}
}
}
private TrackableCollection<Artikel> _artikel;
[DataMember]
public TrackableCollection<Kategorie> Unterkategorie
{
get
{
if (_unterkategorie == null)
{
_unterkategorie = new TrackableCollection<Kategorie>();
_unterkategorie.CollectionChanged += FixupUnterkategorie;
}
return _unterkategorie;
}
set
{
if (!ReferenceEquals(_unterkategorie, value))
{
if (ChangeTracker.ChangeTrackingEnabled)
{
throw new InvalidOperationException("Cannot set the FixupChangeTrackingCollection when ChangeTracking is enabled");
}
if (_unterkategorie != null)
{
_unterkategorie.CollectionChanged -= FixupUnterkategorie;
}
_unterkategorie = value;
if (_unterkategorie != null)
{
_unterkategorie.CollectionChanged += FixupUnterkategorie;
}
OnNavigationPropertyChanged("Unterkategorie");
}
}
}
private TrackableCollection<Kategorie> _unterkategorie;
[DataMember]
public Kategorie Oberkategorie
{
get { return _oberkategorie; }
set
{
if (!ReferenceEquals(_oberkategorie, value))
{
var previousValue = _oberkategorie;
_oberkategorie = value;
FixupOberkategorie(previousValue);
OnNavigationPropertyChanged("Oberkategorie");
}
}
}
private Kategorie _oberkategorie;
你能告訴我們Kategorie對象嗎? – Arion 2012-02-21 09:04:45
我剛剛添加了它 – eMi 2012-02-21 09:08:27