Това може би е много прост въпрос, но все пак не знам как да го реша.
Имам модел в моето MVVM приложение, което искам да обвържа с дървовиден изглед. Мога обаче да свържа дървовидния изглед само към списък с елементи (или в моя случай ObservableCollection). Това е моделът, който използвам в момента:
/// <summary>
/// Represents an group a character can belong to.
/// </summary>
public class OrganisationBase : ModelBase<OrganisationBase>
{
/// <summary>
/// The name.
/// </summary>
private string name;
/// <summary>
/// The parent organization.
/// </summary>
private ObservableCollection<OrganisationBase> parentOrganizations;
/// <summary>
/// Gets or sets the name of the organization.
/// </summary>
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
this.NotifyPropertyChanged(p => p.Name);
}
}
/// <summary>
/// Gets or sets the parent organization.
/// </summary>
public ObservableCollection<OrganisationBase> ParentOrganizations
{
get
{
return this.parentOrganizations;
}
set
{
this.parentOrganizations = value;
this.NotifyPropertyChanged(p => p.ParentOrganizations);
}
}
}
Сега въпросът ми е: Как мога да свържа този модел към моя дървовиден изглед, без да използвам Observable колекции. Искам да направя това, защото няма нужда от ObservableCollection, тъй като всяка организация може да има само един родител.
Или как мога да свържа следния код към моя дървовиден изглед:
/// <summary>
/// Represents an group a character can belong to.
/// </summary>
public class OrganisationBase : ModelBase<OrganisationBase>
{
/// <summary>
/// The name.
/// </summary>
private string name;
/// <summary>
/// The parent organization.
/// </summary>
private OrganisationBase parentOrganizations;
/// <summary>
/// Gets or sets the name of the organization.
/// </summary>
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
this.NotifyPropertyChanged(p => p.Name);
}
}
/// <summary>
/// Gets or sets the parent organization.
/// </summary>
public OrganisationBase ParentOrganizations
{
get
{
return this.parentOrganizations;
}
set
{
this.parentOrganizations = value;
this.NotifyPropertyChanged(p => p.ParentOrganizations);
}
}
}
Това е кодът на дървовидния изглед, който използвам в момента:
<TreeView ItemsSource="{Binding Path=Character.CharacterAllegiances.MemberOf}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded"
Value="True" />
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ParentOrganizations}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Забележка: Свойството Организация е част от символен модел. Въпреки това, когато използвам ObservableCollections, всичко се показва добре. Въпреки това, както ме попитаха по-горе, искам да отхвърля тази ObservableCollections.
Поздрави Ruhrpottpatriot