the <telerik:ContainerBinding PropertyName="IsExpanded"
Binding="{Binding IsItemCollectionExpanded, Mode=TwoWay}" />
is not binding to my object for RadTreeListView, but for a RadTreeView it is working fine. Look at my code what is wrong, ive tried allot of things, what am I missing? Also tried RowDetailsTemplate="{StaticResource RootItem}" not working. Tried to manipulate the RadTreeListView nodes in code behind in my viewmodel, the container is always empty on new loads.
-----------------------------
<telerik:HierarchicalDataTemplate x:Key="RootItem"
ItemsSource="{Binding Children}"
>
<telerik:ContainerBinding.ContainerBindings>
<telerik:ContainerBindingCollection>
<telerik:ContainerBinding PropertyName="IsExpanded"
Binding="{Binding IsItemCollectionExpanded, Mode=TwoWay}" />
</telerik:ContainerBindingCollection>
</telerik:ContainerBinding.ContainerBindings>
</telerik:HierarchicalDataTemplate>
<telerik:RadTreeListView
x:Name="radTreeViewlist"
BorderThickness="1"
BorderBrush="Black"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AutoGenerateColumns="False"
SelectionChanged="radTreeViewlist_SelectionChanged"
IsDragDropEnabled="False"
ItemsSource="{Binding SelectionList}"
SelectionMode="Single"
SelectionUnit="FullRow"
DataLoaded="radTreeViewlist_DataLoaded"
EnableRowVirtualization="True"
EnableColumnVirtualization="True"
ItemTemplate="{StaticResource RootItem}"
>
<telerikNavigation:RadContextMenu.ContextMenu>
<telerikNavigation:RadContextMenu x:Name="radContextMenu"
ItemTemplate="{StaticResource ContextMenuDataTemplate}"
Opened="radContextMenu_Opened"
ItemClick="radContextMenu_ItemClick"
>
</telerikNavigation:RadContextMenu>
</telerikNavigation:RadContextMenu.ContextMenu>
<telerik:RadTreeListView.ChildTableDefinitions>
<telerik:TreeListViewTableDefinition
ItemsSource="{Binding Children}"
>
</telerik:TreeListViewTableDefinition>
</telerik:RadTreeListView.ChildTableDefinitions>
<telerik:RadTreeListView.Columns
>
<telerik:GridViewDataColumn CellStyle="{StaticResource GridViewCellStyle}"
DataMemberBinding="{Binding ItemName, Mode=TwoWay}"
Header="Name"
IsReadOnly="True">
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.TimeQuantityTypeListItem}"
Header="Type" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.TimeQuantity}"
Header="Quantity" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.StartDate}"
Header="StartDate" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.EndDate}"
Header="EndDate" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.StartTime, Converter={StaticResource TimeConverters}}"
Header="StartTime" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.EndTime, Converter={StaticResource TimeConverters}}"
Header="EndTime" IsReadOnly="True"/>
</telerik:RadTreeListView.Columns>
</telerik:RadTreeListView>
----------------------------
<introduces container recycling for further improvement of speed and memory footprint> - is this the problem?
--------------------
works fine for the RadTreeView
____________
RadTreeView:
<telerik:HierarchicalDataTemplate x:Key="RootItem"
ItemsSource="{Binding Children}"
>
<StackPanel Orientation="Horizontal"
>
<Image Source="{Binding ImageURL}" Width="20" Height="20" Margin=" 0,0,6,0" />
<StackPanel Orientation="Horizontal"
Background="{Binding ViewModel, Converter={StaticResource ColorConvertersTreeItemIsNewOrgStructure}}"
>
<TextBlock Text="{Binding ItemName}"
VerticalAlignment="Center" />
<TextBlock Text="{Binding ItemPriority}"
VerticalAlignment="Center" />
</StackPanel>
</StackPanel>
<telerik:ContainerBinding.ContainerBindings>
<telerik:ContainerBindingCollection>
<telerik:ContainerBinding PropertyName="IsExpanded"
Binding="{Binding IsItemCollectionExpanded, Mode=TwoWay}" />
</telerik:ContainerBindingCollection>
</telerik:ContainerBinding.ContainerBindings>
</telerik:HierarchicalDataTemplate>
<telerikNavigation:RadTreeView x:Name="radTreeView"
BorderThickness="0"
BorderBrush="Black"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding OrgStructList}"
ItemTemplate="{StaticResource RootItem}"
Width="300"
IsDragDropEnabled="True"
PreviewDragStarted="radTreeView_PreviewDragStarted"
DragStarted="radTreeView_DragStarted"
PreviewDragEnded="radTreeView_PreviewDragEnded"
DragEnded="radTreeView_DragEnded"
>
<telerikNavigation:RadContextMenu.ContextMenu>
<telerikNavigation:RadContextMenu x:Name="radContextMenu"
ItemTemplate="{StaticResource ContextMenuDataTemplate}"
Opened="radContextMenu_Opened"
>
</telerikNavigation:RadContextMenu>
</telerikNavigation:RadContextMenu.ContextMenu>
</telerikNavigation:RadTreeView>
--------------
viewModel - cs.:
private void HandleIsExpandedTreeItems(ObservableCollection<TreeViewListItem> collection, ObservableCollection<TreeViewListItem> collectionCopy)
{
if (collection != null && collection.Count > 0)
foreach (var item in collection)
if (collectionCopy != null && collectionCopy.Count > 0)
foreach (var itemCopy in collectionCopy)
{
if (item.Equals(itemCopy))
{
item.IsItemCollectionExpanded = itemCopy.IsItemCollectionExpanded; // for items
if (item.IsItemCollectionExpanded)
{ }
HandleIsExpandedTreeItems(item.Children, itemCopy.Children);
break;
}
}
}
----------
TreeViewListItem myClass.cs:
public class TreeViewListItem
{
public TreeViewListItem(ObservableCollection<TreeViewListItem> theParent, object viewModel, TreeViewListItemObjectType objType, string name, string imageURL, int pId, int pPriority)
{
//Children = new ObservableCollection<TreeViewListItem>();
parent = theParent;
ViewModel = viewModel;
ObjType = objType;
ImageURL = imageURL;
ItemName = name;
Id = pId;
Priority = pPriority;
}
...
}
Binding="{Binding IsItemCollectionExpanded, Mode=TwoWay}" />
is not binding to my object for RadTreeListView, but for a RadTreeView it is working fine. Look at my code what is wrong, ive tried allot of things, what am I missing? Also tried RowDetailsTemplate="{StaticResource RootItem}" not working. Tried to manipulate the RadTreeListView nodes in code behind in my viewmodel, the container is always empty on new loads.
-----------------------------
<telerik:HierarchicalDataTemplate x:Key="RootItem"
ItemsSource="{Binding Children}"
>
<telerik:ContainerBinding.ContainerBindings>
<telerik:ContainerBindingCollection>
<telerik:ContainerBinding PropertyName="IsExpanded"
Binding="{Binding IsItemCollectionExpanded, Mode=TwoWay}" />
</telerik:ContainerBindingCollection>
</telerik:ContainerBinding.ContainerBindings>
</telerik:HierarchicalDataTemplate>
<telerik:RadTreeListView
x:Name="radTreeViewlist"
BorderThickness="1"
BorderBrush="Black"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AutoGenerateColumns="False"
SelectionChanged="radTreeViewlist_SelectionChanged"
IsDragDropEnabled="False"
ItemsSource="{Binding SelectionList}"
SelectionMode="Single"
SelectionUnit="FullRow"
DataLoaded="radTreeViewlist_DataLoaded"
EnableRowVirtualization="True"
EnableColumnVirtualization="True"
ItemTemplate="{StaticResource RootItem}"
>
<telerikNavigation:RadContextMenu.ContextMenu>
<telerikNavigation:RadContextMenu x:Name="radContextMenu"
ItemTemplate="{StaticResource ContextMenuDataTemplate}"
Opened="radContextMenu_Opened"
ItemClick="radContextMenu_ItemClick"
>
</telerikNavigation:RadContextMenu>
</telerikNavigation:RadContextMenu.ContextMenu>
<telerik:RadTreeListView.ChildTableDefinitions>
<telerik:TreeListViewTableDefinition
ItemsSource="{Binding Children}"
>
</telerik:TreeListViewTableDefinition>
</telerik:RadTreeListView.ChildTableDefinitions>
<telerik:RadTreeListView.Columns
>
<telerik:GridViewDataColumn CellStyle="{StaticResource GridViewCellStyle}"
DataMemberBinding="{Binding ItemName, Mode=TwoWay}"
Header="Name"
IsReadOnly="True">
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.TimeQuantityTypeListItem}"
Header="Type" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.TimeQuantity}"
Header="Quantity" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.StartDate}"
Header="StartDate" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.EndDate}"
Header="EndDate" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.StartTime, Converter={StaticResource TimeConverters}}"
Header="StartTime" IsReadOnly="True"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding TimePeriod.EndTime, Converter={StaticResource TimeConverters}}"
Header="EndTime" IsReadOnly="True"/>
</telerik:RadTreeListView.Columns>
</telerik:RadTreeListView>
----------------------------
<introduces container recycling for further improvement of speed and memory footprint> - is this the problem?
--------------------
works fine for the RadTreeView
____________
RadTreeView:
<telerik:HierarchicalDataTemplate x:Key="RootItem"
ItemsSource="{Binding Children}"
>
<StackPanel Orientation="Horizontal"
>
<Image Source="{Binding ImageURL}" Width="20" Height="20" Margin=" 0,0,6,0" />
<StackPanel Orientation="Horizontal"
Background="{Binding ViewModel, Converter={StaticResource ColorConvertersTreeItemIsNewOrgStructure}}"
>
<TextBlock Text="{Binding ItemName}"
VerticalAlignment="Center" />
<TextBlock Text="{Binding ItemPriority}"
VerticalAlignment="Center" />
</StackPanel>
</StackPanel>
<telerik:ContainerBinding.ContainerBindings>
<telerik:ContainerBindingCollection>
<telerik:ContainerBinding PropertyName="IsExpanded"
Binding="{Binding IsItemCollectionExpanded, Mode=TwoWay}" />
</telerik:ContainerBindingCollection>
</telerik:ContainerBinding.ContainerBindings>
</telerik:HierarchicalDataTemplate>
<telerikNavigation:RadTreeView x:Name="radTreeView"
BorderThickness="0"
BorderBrush="Black"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding OrgStructList}"
ItemTemplate="{StaticResource RootItem}"
Width="300"
IsDragDropEnabled="True"
PreviewDragStarted="radTreeView_PreviewDragStarted"
DragStarted="radTreeView_DragStarted"
PreviewDragEnded="radTreeView_PreviewDragEnded"
DragEnded="radTreeView_DragEnded"
>
<telerikNavigation:RadContextMenu.ContextMenu>
<telerikNavigation:RadContextMenu x:Name="radContextMenu"
ItemTemplate="{StaticResource ContextMenuDataTemplate}"
Opened="radContextMenu_Opened"
>
</telerikNavigation:RadContextMenu>
</telerikNavigation:RadContextMenu.ContextMenu>
</telerikNavigation:RadTreeView>
--------------
viewModel - cs.:
private void HandleIsExpandedTreeItems(ObservableCollection<TreeViewListItem> collection, ObservableCollection<TreeViewListItem> collectionCopy)
{
if (collection != null && collection.Count > 0)
foreach (var item in collection)
if (collectionCopy != null && collectionCopy.Count > 0)
foreach (var itemCopy in collectionCopy)
{
if (item.Equals(itemCopy))
{
item.IsItemCollectionExpanded = itemCopy.IsItemCollectionExpanded; // for items
if (item.IsItemCollectionExpanded)
{ }
HandleIsExpandedTreeItems(item.Children, itemCopy.Children);
break;
}
}
}
----------
TreeViewListItem myClass.cs:
public class TreeViewListItem
{
public TreeViewListItem(ObservableCollection<TreeViewListItem> theParent, object viewModel, TreeViewListItemObjectType objType, string name, string imageURL, int pId, int pPriority)
{
//Children = new ObservableCollection<TreeViewListItem>();
parent = theParent;
ViewModel = viewModel;
ObjType = objType;
ImageURL = imageURL;
ItemName = name;
Id = pId;
Priority = pPriority;
}
...
}