MainWindow.xaml:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="0" x:Name="TestTabs" Loaded="TestTabs_Loaded" SelectionChanged="TestTabs_SelectionChanged">
<TabItem Name="Tab1" Header="News"/>
<TabItem Name="Tab2" Header="Files"/>
<TabItem Name="Tab3" Header="Settings"/>
<TabItem Name="Tab4" Header="Help"/>
</TabControl>
<DockPanel x:Name="rp" Grid.Row="0" LastChildFill="False" HorizontalAlignment="Stretch">
<Canvas DockPanel.Dock="Left">
<Rectangle x:Name="MySeparator3" Fill="Orange" VerticalAlignment="Top" Height="4" Margin="3,25,0,0" Visibility="Visible" IsEnabled="True"
SnapsToDevicePixels="True" UseLayoutRounding="True" RenderOptions.EdgeMode="Aliased" RenderOptions.BitmapScalingMode="HighQuality" >
</Rectangle>
</Canvas>
</DockPanel>
<TextBlock Grid.Row="1" Text="{Binding ElementName=Tab1,Path=ActualWidth}" Height="50" Width="100"/>
</Grid>
MainWindow.xaml.cs:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
namespace RectangleWidthAndSlide
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public int Start{ get;set;}
private void TestTabs_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
TabItem ti = ((sender as TabControl).SelectedItem as TabItem);
double sz1 = ti.ActualWidth;
MySeparator3.Width = sz1;
MySeparator3.UpdateLayout();
if (e.RemovedItems.Count > 0)
{
var oldTabItem = e.RemovedItems[0] as TabItem;
DoubleAnimation translate_x = null;
if (oldTabItem.Name == "Tab1")
{
switch (ti.Name)
{
case "Tab2":
translate_x = new DoubleAnimation()
{
From = 0,
To = 40,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab3":
translate_x = new DoubleAnimation()
{
From = 0,
To = 75,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab4":
translate_x = new DoubleAnimation()
{
From = 0,
To = 130,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
}
var translate_y = new DoubleAnimation()
{
From = 0,
To = 0,
Duration = TimeSpan.FromSeconds(1),
};
TranslateTransform translateTransform1 = new TranslateTransform();
translateTransform1.BeginAnimation(TranslateTransform.XProperty, translate_x);
translateTransform1.BeginAnimation(TranslateTransform.YProperty, translate_y);
MySeparator3.RenderTransform = translateTransform1;
}
if (oldTabItem.Name == "Tab2")
{
switch (ti.Name)
{
case "Tab1":
translate_x = new DoubleAnimation()
{
From = 40,
To = 0,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab3":
translate_x = new DoubleAnimation()
{
From = 40,
To = 75,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab4":
translate_x = new DoubleAnimation()
{
From = 40,
To = 130,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
}
var translate_y = new DoubleAnimation()
{
From = 0,
To = 0,
Duration = TimeSpan.FromSeconds(1),
};
TranslateTransform translateTransform1 = new TranslateTransform();
translateTransform1.BeginAnimation(TranslateTransform.XProperty, translate_x);
translateTransform1.BeginAnimation(TranslateTransform.YProperty, translate_y);
MySeparator3.RenderTransform = translateTransform1;
}
if (oldTabItem.Name == "Tab3")
{
switch (ti.Name)
{
case "Tab1":
translate_x = new DoubleAnimation()
{
From = 75,
To = 0,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab2":
translate_x = new DoubleAnimation()
{
From = 75,
To = 40,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab4":
translate_x = new DoubleAnimation()
{
From = 75,
To = 130,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
}
var translate_y = new DoubleAnimation()
{
From = 0,
To = 0,
Duration = TimeSpan.FromSeconds(1),
};
TranslateTransform translateTransform1 = new TranslateTransform();
translateTransform1.BeginAnimation(TranslateTransform.XProperty, translate_x);
translateTransform1.BeginAnimation(TranslateTransform.YProperty, translate_y);
MySeparator3.RenderTransform = translateTransform1;
}
if(oldTabItem.Name == "Tab4")
{
switch (ti.Name)
{
case "Tab1":
translate_x = new DoubleAnimation()
{
From = 130,
To = 0,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab2":
translate_x = new DoubleAnimation()
{
From = 130,
To = 40,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
case "Tab3":
translate_x = new DoubleAnimation()
{
From = 130,
To = 75,
Duration = TimeSpan.FromSeconds(0.2),
};
break;
}
var translate_y = new DoubleAnimation()
{
From = 0,
To = 0,
Duration = TimeSpan.FromSeconds(1),
};
TranslateTransform translateTransform1 = new TranslateTransform();
translateTransform1.BeginAnimation(TranslateTransform.XProperty, translate_x);
translateTransform1.BeginAnimation(TranslateTransform.YProperty, translate_y);
MySeparator3.RenderTransform = translateTransform1;
}
}
}
private void TestTabs_Loaded(object sender, RoutedEventArgs e)
{
var tabControl = (TabControl)sender;
tabControl.SelectedItem = Tab1;
TabItem ti = (tabControl.SelectedItem as TabItem);
double sz1 = ti.ActualWidth-5;
MySeparator3.Width = sz1;
MySeparator3.UpdateLayout();
}
}
}
The result:
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our [documentation][5] to enable e-mail notifications if you want to receive the related email notification for this thread.
[5]: https://learn.microsoft.com/en-us/answers/articles/67444/email-notifications.html