or
Hi
There is a problem in the RadTreeView.
When you rename a node, and the name is longer then the tree’s container width, the tree shakes.
Please try renamning a node with a long name with many ‘a’.
Then rename again the same way, move to a node that has children and the tree will start shaking.
Thanks
Lior Aloni
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" |
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
x:Class="GSTAT.Xeligence.DTM.Client.DTMTemplate" |
Loaded="UserControl_Loaded" mc:Ignorable="d" |
xmlns:vsm="clr-namespace:System.Windows;assembly=PresentationFramework"> |
<UserControl.Resources> |
<ControlTemplate TargetType="{x:Type telerik:RadTreeViewItem}" x:Key="TreeViewItemDefaultTemplate"> |
<ControlTemplate.Triggers> |
<Trigger Property="IsExpanded" Value="True"> |
<Trigger.EnterActions> |
<BeginStoryboard> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemsHost" |
Storyboard.TargetProperty="Visibility" Duration="0"> |
<DiscreteObjectKeyFrame KeyTime="0"> |
<DiscreteObjectKeyFrame.Value> |
<Visibility>Visible</Visibility> |
</DiscreteObjectKeyFrame.Value> |
</DiscreteObjectKeyFrame> |
</ObjectAnimationUsingKeyFrames> |
<DoubleAnimation Storyboard.TargetName="ItemsHost" |
Storyboard.TargetProperty="Opacity" From="0.1" To="1.0" |
Duration="0:0:0.2" /> |
</Storyboard> |
</BeginStoryboard> |
</Trigger.EnterActions> |
<Trigger.ExitActions> |
<BeginStoryboard> |
<Storyboard> |
<DoubleAnimation Storyboard.TargetName="ItemsHost" |
Storyboard.TargetProperty="Opacity" From="1" To="0.1" |
Duration="0:0:0.2" /> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemsHost" |
Storyboard.TargetProperty="Visibility" Duration="0" |
BeginTime="0:0:0.2"> |
<DiscreteObjectKeyFrame KeyTime="0"> |
<DiscreteObjectKeyFrame.Value> |
<Visibility>Collapsed</Visibility> |
</DiscreteObjectKeyFrame.Value> |
</DiscreteObjectKeyFrame> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</BeginStoryboard> |
</Trigger.ExitActions> |
</Trigger> |
</ControlTemplate.Triggers> |
<Grid Height="Auto" VerticalAlignment="Center" Background="Beige" > |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto" /> |
<ColumnDefinition Width="Auto" /> |
<ColumnDefinition Width="Auto" /> |
</Grid.ColumnDefinitions> |
<Grid.RowDefinitions> |
<RowDefinition Height="Auto" ></RowDefinition> |
</Grid.RowDefinitions> |
<!--<Rectangle x:Name="VerticalLine" Fill="Blue" Grid.Column="0" Height="2"></Rectangle> |
<Rectangle x:Name="HorizontalLine" Fill="Black" Grid.Column="0" Width="2"></Rectangle>--> |
<Grid Grid.Column="1" x:Name="HeaderRow" Height="Auto" Grid.Row="0" VerticalAlignment="Center" Background="Bisque"> |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto"></ColumnDefinition> |
<ColumnDefinition Width="Auto"></ColumnDefinition> |
<ColumnDefinition Width="Auto"></ColumnDefinition> |
<ColumnDefinition Width="Auto"></ColumnDefinition> |
</Grid.ColumnDefinitions> |
<Grid.RowDefinitions> |
<RowDefinition Height="Auto"></RowDefinition> |
</Grid.RowDefinitions> |
<ToggleButton x:Name="Expander" Margin="0,0,0,0" Grid.Column="0"></ToggleButton> |
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1"> |
<Border HorizontalAlignment="Center" |
VerticalAlignment="Center" |
CornerRadius="3" |
Background="{DynamicResource BrushWindowDarkGrayBG}" |
Padding="3"> |
<ContentControl x:Name="Header" |
Content="{TemplateBinding Header}" |
ContentTemplate="{TemplateBinding HeaderTemplate}" |
Width="86.487" Height="13.277" Foreground="White" /> |
</Border> |
</StackPanel> |
<!--<StackPanel x:Name="IndentContainer" Orientation="Horizontal" />--> |
<StackPanel x:Name="LoadingVisual" Orientation="Horizontal" /> |
</Grid> |
<ItemsPresenter x:Name="ItemsHost" Grid.Column="2" Visibility="Collapsed" Height="Auto" VerticalAlignment="Center"> |
</ItemsPresenter> |
</Grid> |
</ControlTemplate> |
<Style TargetType="ToggleButton" x:Key="ExpanderStyle"> |
<Setter Property="IsEnabled" Value="True" /> |
<Setter Property="IsTabStop" Value="False" /> |
<Setter Property="Cursor" Value="Hand" /> |
<Setter Property="Template"> |
<Setter.Value> |
<ControlTemplate TargetType="ToggleButton"> |
<ControlTemplate.Triggers> |
<Trigger Property="IsChecked" Value="True"> |
<Trigger.EnterActions> |
<BeginStoryboard> |
<Storyboard> |
<DoubleAnimation Duration="0:0:0.2" |
Storyboard.TargetName="ExpandedStates" |
Storyboard.TargetProperty="Opacity" To="1" /> |
<DoubleAnimation Duration="0:0:0.2" |
Storyboard.TargetName="CollapsedStates" |
Storyboard.TargetProperty="Opacity" To="0" /> |
</Storyboard> |
</BeginStoryboard> |
</Trigger.EnterActions> |
<Trigger.ExitActions> |
<BeginStoryboard> |
<Storyboard> |
<DoubleAnimation Duration="0:0:0.2" |
Storyboard.TargetName="ExpandedStates" |
Storyboard.TargetProperty="Opacity" To="0" /> |
<DoubleAnimation Duration="0:0:0.2" |
Storyboard.TargetName="CollapsedStates" |
Storyboard.TargetProperty="Opacity" To="1" /> |
</Storyboard> |
</BeginStoryboard> |
</Trigger.ExitActions> |
</Trigger> |
<Trigger Property="IsEnabled" Value="False"> |
<Trigger.EnterActions> |
<BeginStoryboard> |
<Storyboard> |
<DoubleAnimation Duration="0:0:0.2" |
Storyboard.TargetName="ExpandedStates" |
Storyboard.TargetProperty="Opacity" To="0" /> |
<DoubleAnimation Duration="0:0:0.2" |
Storyboard.TargetName="CollapsedStates" |
Storyboard.TargetProperty="Opacity" To="1" /> |
</Storyboard> |
</BeginStoryboard> |
</Trigger.EnterActions> |
</Trigger> |
</ControlTemplate.Triggers> |
<Grid> |
<Grid x:Name="CollapsedStates"> |
<Ellipse x:Name="CollapsedVisual" Width="10" Height="10" Fill="CornflowerBlue"></Ellipse> |
</Grid> |
<Grid x:Name="ExpandedStates"> |
<Ellipse x:Name="ExpandedVisual" Width="10" Height="10" Fill="BurlyWood"></Ellipse> |
</Grid> |
</Grid> |
</ControlTemplate> |
</Setter.Value> |
</Setter> |
</Style> |
<Style TargetType="{x:Type telerik:RadTreeViewItem}" x:Key="RadTreeViewItemStyle"> |
<Setter Property="Template" Value="{StaticResource TreeViewItemDefaultTemplate}" /> |
<Setter Property="IsExpanded" Value="True" /> |
<Setter Property="ItemsPanel"> |
<Setter.Value> |
<ItemsPanelTemplate> |
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center"/> |
</ItemsPanelTemplate> |
</Setter.Value> |
</Setter> |
</Style> |
</UserControl.Resources> |
<Grid> |
<telerik:RadTreeView |
x:Name="DTMTree" |
AllowDrop="True" |
IsDragDropEnabled="True" |
IsLineEnabled="True" |
ExpanderStyle="{StaticResource ExpanderStyle}" |
ItemContainerStyle="{StaticResource RadTreeViewItemStyle}" |
IsExpandOnSingleClickEnabled="True" |
Selected="DTMTree_Selected" |
MouseDoubleClick="DTMTree_MouseDoubleClick" |
SelectionChanged="DTMTree_SelectionChanged" |
Margin="5,0,0,0" |
IsRootLinesEnabled="True"> |
<telerik:RadTreeView.ItemsPanel> |
<ItemsPanelTemplate> |
<StackPanel VerticalAlignment="Center" |
Orientation="Horizontal" |
HorizontalAlignment="Left" /> |
</ItemsPanelTemplate> |
</telerik:RadTreeView.ItemsPanel> |
<telerik:RadTreeViewItem Header="Root" |
AllowDrop="True" |
ItemContainerStyle="{StaticResource RadTreeViewItemStyle}" ForceCursor="True"> |
<telerik:RadTreeViewItem Header="A" |
ItemContainerStyle="{StaticResource RadTreeViewItemStyle}"/> |
<telerik:RadTreeViewItem Header="B" |
ItemContainerStyle="{StaticResource RadTreeViewItemStyle}"/> |
</telerik:RadTreeViewItem> |
</telerik:RadTreeView> |
</Grid> |
</UserControl> |
public partial class MainWindow : Window |
{ |
public MainWindow() |
{ |
InitializeComponent(); |
(Resources["DataSource"] as RadTreeViewSampleData).SelectedItem = (radTreeView.ItemsSource as IEnumerable<League>).LastOrDefault(); |
} |
} |
public class League : DependencyObject |
{ |
public League(string name) |
{ |
this.Name = name; |
this.Leagues = new List<League>(); |
} |
public string Name |
{ |
get; |
set; |
} |
public List<League> Leagues |
{ |
get; |
set; |
} |
} |
public class RadTreeViewSampleData : DependencyObject |
{ |
/// <summary> |
/// Identifies the SelectedItem dependency property. |
/// </summary> |
public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof(League), typeof(RadTreeViewSampleData)); |
/// <summary> |
/// Gets or sets SelectedItem. This is a dependency property. |
/// </summary> |
public League SelectedItem |
{ |
get { return (League)GetValue(SelectedItemProperty); } |
set { SetValue(SelectedItemProperty, value); } |
} |
public RadTreeViewSampleData() |
{ |
this.InitializeLeaguesDataSource(); |
} |
public List<League> LeaguesDataSource |
{ |
get; |
set; |
} |
private void InitializeLeaguesDataSource() |
{ |
this.LeaguesDataSource = new List<League>(); |
League l; |
League d; |
this.LeaguesDataSource.Add(l = new League("League A")); |
} |
} |
<Window.Resources> |
<local:RadTreeViewSampleData x:Key="DataSource"/> |
</Window.Resources> |
<telerik:RadTreeView x:Name="radTreeView" ItemsSource="{Binding Path=LeaguesDataSource, Source={StaticResource DataSource}}" SelectedItem="{Binding Path=SelectedItem, Source={StaticResource DataSource}, Mode=TwoWay}"> |
<telerik:RadTreeView.ItemTemplate> |
<HierarchicalDataTemplate ItemsSource="{Binding Path=Leagues}"> |
<TextBlock Text="{Binding Path=Name}" /> |
</HierarchicalDataTemplate> |
</telerik:RadTreeView.ItemTemplate> |
</telerik:RadTreeView> |