List<ClsDataOfTreeListItem> Items = new List<ClsDataOfTreeListItem>() ;
foreach (Telerik.Windows.Controls.TreeListView.TreeListViewRow row in myTreeListView.ChildrenOfType<Telerik.Windows.Controls.TreeListView.TreeListViewRow>())
{
if(row.IsExpanded==true)
Items.Add( (ClsDataOfTreeListItem)row.Item);
}
//then i refresh data from the database
GetData() //this populates data with refreshed contents from DB
//after refresh, expand the same items again by collected information
//the problem is, that this time the foreach loop doe not find any rows
foreach (Telerik.Windows.Controls.TreeListView.TreeListViewRow row in
myTreeListView.ChildrenOfType<Telerik.Windows.Controls.TreeListView.TreeListViewRow>())
{
foreach (ClsDataOfTreeListItem itm in Items)
{
ClsDataOfTreeListItem tmpItem = (ClsDataOfTreeListItem)row.DataContext;
if (itm.ID == tmpItem.ID)
row.IsExpanded = true;
}
}
//after the operation, the UI is refreshed and the items not expanded, because the foreach loop did not find any rows after data refresh from db.
Why does the foreach loop detect any rows after data refresh? Is there any way to refresh the UI programmatically before trying to espand as it origanally was? Rebind after data refresh dide not help. Is there any "datarefreshed" event that I could use (the tmpItems could be stored and used in event handler if there is good one for this purpose)?
Is there any other ways to get and set the original expanded information (and the scrolled position if possible).?
<
DataTemplate
x:Key
=
"headerTemplate"
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
telerik:RadButton
Width
=
"14"
Height
=
"14"
Margin
=
"0 0 0 0"
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Center"
Content
=
"X"
FontSize
=
"10"
Foreground
=
"Black"
Background
=
"White"
Command
=
"{Binding Path=DataContext.RemoveTileCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
CommandParameter
=
"{Binding RelativeSource={RelativeSource AncestorType=telerik:RadTileViewItem}}"
Padding
=
"0"
/>
<
TextBlock
x:Name
=
"TileHeader"
FontSize
=
"10"
Text
=
"{Binding Path=DataContext.DataContext.TileCaption, RelativeSource={RelativeSource AncestorType=telerik:RadTileViewItem}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment
=
"Left"
/>
</
StackPanel
>
</
DataTemplate
>
<
ResourceDictionary
xmlns
=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:telerik
=
"clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
xmlns:local
=
"clr-namespace:CustomControl"
>
<
Style
TargetType
=
"{x:Type local:RadCustomBtn}"
>
<
Setter
Property
=
"BorderThickness"
Value
=
"0"
/>
<
Setter
Property
=
"BorderBrush"
Value
=
"#FF848484"
/>
<
Setter
Property
=
"Background"
>
<
Setter.Value
>
<
SolidColorBrush
Color
=
"#408AD2"
/>
</
Setter.Value
>
</
Setter
>
<
Setter
Property
=
"Foreground"
Value
=
"Black"
/>
<
Setter
Property
=
"HorizontalContentAlignment"
Value
=
"Center"
/>
<
Setter
Property
=
"VerticalContentAlignment"
Value
=
"Center"
/>
<
Setter
Property
=
"Padding"
Value
=
"3"
/>
<
Setter
Property
=
"CornerRadius"
Value
=
"0"
/>
<
Setter
Property
=
"Template"
>
<
Setter.Value
>
<
ControlTemplate
TargetType
=
"{x:Type local:RadCustomBtn}"
>
<
Grid
SnapsToDevicePixels
=
"True"
>
<
VisualStateManager.VisualStateGroups
>
<
VisualStateGroup
x:Name
=
"CommonStates"
>
<
VisualState
x:Name
=
"Normal"
/>
<
VisualState
x:Name
=
"MouseOver"
>
<
Storyboard
>
<
ObjectAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"BorderBrush"
Storyboard.TargetName
=
"OuterBorder"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
SolidColorBrush
Color
=
"#408AD2"
/>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
<
ObjectAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"Background"
Storyboard.TargetName
=
"InnerBorder"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
SolidColorBrush
Color
=
"#679ED2"
/>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
<
ObjectAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"BorderBrush"
Storyboard.TargetName
=
"InnerBorder"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
SolidColorBrush
Color
=
"White"
/>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
</
Storyboard
>
</
VisualState
>
<
VisualState
x:Name
=
"Pressed"
>
<
Storyboard
>
<
DoubleAnimation
Duration
=
"0"
To
=
"0"
Storyboard.TargetProperty
=
"Opacity"
Storyboard.TargetName
=
"CommonStatesWrapper"
/>
<
ObjectAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"BorderBrush"
Storyboard.TargetName
=
"OuterBorder"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
SolidColorBrush
Color
=
"#408AD2"
/>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
<
ObjectAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"Background"
Storyboard.TargetName
=
"InnerBorder"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
SolidColorBrush
Color
=
"#679ED2"
/>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
<
ObjectAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"BorderBrush"
Storyboard.TargetName
=
"InnerBorder"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
SolidColorBrush
Color
=
"#408AD2"
/>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
</
Storyboard
>
</
VisualState
>
<
VisualState
x:Name
=
"Disabled"
>
<
Storyboard
>
<
ObjectAnimationUsingKeyFrames
Storyboard.TargetProperty
=
"Visibility"
Storyboard.TargetName
=
"disabledBorder"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
Visibility
>Visible</
Visibility
>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
<
DoubleAnimation
Duration
=
"0"
To
=
"0.5"
Storyboard.TargetProperty
=
"Opacity"
Storyboard.TargetName
=
"Content"
/>
</
Storyboard
>
</
VisualState
>
</
VisualStateGroup
>
<
VisualStateGroup
x:Name
=
"BackgroundVisibility"
>
<
VisualState
x:Name
=
"BackgroundHidden"
>
<
Storyboard
>
<
DoubleAnimation
Duration
=
"0"
To
=
"0"
Storyboard.TargetProperty
=
"Opacity"
Storyboard.TargetName
=
"OuterBorder"
/>
<
DoubleAnimation
Duration
=
"0"
To
=
"0"
Storyboard.TargetProperty
=
"Opacity"
Storyboard.TargetName
=
"disabledBorder"
/>
</
Storyboard
>
</
VisualState
>
<
VisualState
x:Name
=
"BackgroundVisible"
/>
</
VisualStateGroup
>
<
VisualStateGroup
x:Name
=
"FocusStatesGroup"
>
<
VisualState
x:Name
=
"Unfocused"
>
<
Storyboard
>
<
ObjectAnimationUsingKeyFrames
Storyboard.TargetProperty
=
"Visibility"
Storyboard.TargetName
=
"FocusVisual"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0:0:0.15"
>
<
DiscreteObjectKeyFrame.Value
>
<
Visibility
>Collapsed</
Visibility
>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
<
DoubleAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"Opacity"
Storyboard.TargetName
=
"FocusVisual"
>
<
LinearDoubleKeyFrame
KeyTime
=
"0:0:0.15"
Value
=
"0"
/>
</
DoubleAnimationUsingKeyFrames
>
</
Storyboard
>
</
VisualState
>
<
VisualState
x:Name
=
"Focused"
>
<
Storyboard
>
<
ObjectAnimationUsingKeyFrames
Duration
=
"0"
Storyboard.TargetProperty
=
"Visibility"
Storyboard.TargetName
=
"FocusVisual"
>
<
DiscreteObjectKeyFrame
KeyTime
=
"0"
>
<
DiscreteObjectKeyFrame.Value
>
<
Visibility
>Visible</
Visibility
>
</
DiscreteObjectKeyFrame.Value
>
</
DiscreteObjectKeyFrame
>
</
ObjectAnimationUsingKeyFrames
>
<
DoubleAnimation
Duration
=
"0"
To
=
"1"
Storyboard.TargetProperty
=
"Opacity"
Storyboard.TargetName
=
"FocusVisual"
/>
</
Storyboard
>
</
VisualState
>
</
VisualStateGroup
>
</
VisualStateManager.VisualStateGroups
>
<
Border
x:Name
=
"OuterBorder"
BorderBrush
=
"{TemplateBinding BorderBrush}"
BorderThickness
=
"{TemplateBinding BorderThickness}"
CornerRadius
=
"{TemplateBinding CornerRadius}"
>
<
Border
x:Name
=
"InnerBorder"
BorderBrush
=
"White"
BorderThickness
=
"{TemplateBinding BorderThickness}"
Background
=
"{TemplateBinding Background}"
CornerRadius
=
"{TemplateBinding InnerCornerRadius}"
/>
</
Border
>
<
Border
x:Name
=
"disabledBorder"
BorderBrush
=
"Transparent"
BorderThickness
=
"{TemplateBinding BorderThickness}"
Background
=
"#FFE0E0E0"
CornerRadius
=
"{TemplateBinding CornerRadius}"
Visibility
=
"Collapsed"
/>
<!--<ContentPresenter x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Style="{DynamicResource radButton_style_label}"/>-->
<
StackPanel
Orientation
=
"{TemplateBinding Orientation}"
HorizontalAlignment
=
"Center"
>
<
Viewbox
>
<
StackPanel
Width
=
"{TemplateBinding IconWidth}"
Height
=
"{TemplateBinding IconHeight}"
Visibility
=
"{TemplateBinding IconVisibility}"
>
<
ContentPresenter
x:Name
=
"Content"
ContentTemplate
=
"{TemplateBinding ContentTemplate}"
Content
=
"{TemplateBinding Icon}"
ContentStringFormat
=
"{TemplateBinding ContentStringFormat}"
HorizontalAlignment
=
"{TemplateBinding HorizontalContentAlignment}"
Margin
=
"{TemplateBinding Padding}"
RecognizesAccessKey
=
"True"
VerticalAlignment
=
"{TemplateBinding VerticalContentAlignment}"
Style
=
"{DynamicResource radButton_style_label}"
/>
</
StackPanel
>
</
Viewbox
>
<
StackPanel
Width
=
"auto"
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Center"
Orientation
=
"Vertical"
>
<
TextBlock
Text
=
"{TemplateBinding Text}"
Foreground
=
"{TemplateBinding Foreground}"
FontSize
=
"40"
></
TextBlock
>
</
StackPanel
>
</
StackPanel
>
<
Border
x:Name
=
"CommonStatesWrapper"
>
<
Border
x:Name
=
"FocusVisual"
BorderBrush
=
"#FFFFFF"
BorderThickness
=
"1"
Background
=
"Transparent"
CornerRadius
=
"{TemplateBinding CornerRadius}"
Opacity
=
"0"
Visibility
=
"Collapsed"
>
<
Border
x:Name
=
"FocusInnerVisual"
BorderBrush
=
"Transparent"
BorderThickness
=
"1"
CornerRadius
=
"{TemplateBinding InnerCornerRadius}"
/>
</
Border
>
</
Border
>
</
Grid
>
</
ControlTemplate
>
</
Setter.Value
>
</
Setter
>
</
Style
>
</
ResourceDictionary
>