xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="439" d:DesignWidth="437" Loaded="UserControl_Loaded">
<UserControl.Resources>
<ControlTemplate x:Key="ButtonLeft" TargetType="{x:Type Button}">
<Grid>
<Polygon x:Name="ButtonPolygon" Stretch="Fill" Points="100,100 100,0 0,50" Stroke="White" StrokeThickness="2">
<Polygon.Fill>
<SolidColorBrush Color="Red" Opacity="0.8"/>
</Polygon.Fill>
</Polygon>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ButtonPolygon" Property="Fill" Value="Black"></Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="ButtonPolygon" Property="Fill" Value="Gray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<ControlTemplate x:Key="ButtonRight" TargetType="{x:Type Button}">
<Grid>
<Polygon x:Name="ButtonPolygon" Stretch="Fill" Points="0,0 0,100 100,50" Stroke="White" StrokeThickness="2">
<Polygon.Fill>
<SolidColorBrush Color="Gray" Opacity="0.8"/>
</Polygon.Fill>
</Polygon>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ButtonPolygon" Property="Fill" Value="Black"></Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="ButtonPolygon" Property="Fill" Value="Blue"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</UserControl.Resources>
</UserControl>
public partial class UserControl1 : UserControl
{
Grid myGridTitle = new Grid();
Grid myGrid = new Grid();
ScrollViewer myScrollViewer = new ScrollViewer();
double width = 0;
public UserControl1()
{
InitializeComponent();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
width = this.Width - 20;
myGrid.Width = this.Width - 20;
myGrid.Height = this.Height-20;
myGrid.HorizontalAlignment = HorizontalAlignment.Left;
myGrid.VerticalAlignment = VerticalAlignment.Top;
myGrid.ShowGridLines = true;
myGrid.ColumnDefinitions.Add(new ColumnDefinition());
myGrid.RowDefinitions.Add(new RowDefinition());
myGrid.RowDefinitions.Add(new RowDefinition());
myGrid.RowDefinitions.Add(new RowDefinition());
myGrid.RowDefinitions.Add(new RowDefinition());
Button button1 = new Button();
button1.Template = (ControlTemplate)(this.Resources["ButtonRight"]);
button1.Click += button1_Click;
button1.Background = Brushes.Red;
button1.Width = 30;
Grid.SetColumn(button1, 2);
Grid.SetRow(button1, 0);
Button button2 = new Button();
button2.Template = (ControlTemplate)(this.Resources["ButtonLeft"]);
button2.Click += button2_Click;
button2.Background = Brushes.Red;
button2.Width = 30;
Grid.SetColumn(button2, 1);
Grid.SetRow(button2, 0);
myGridTitle.Width = myGrid.Width;
myGridTitle.Height = 30;
myGridTitle.ColumnDefinitions.Add(new ColumnDefinition());
ColumnDefinition ColumnDefinition1 = new ColumnDefinition();
ColumnDefinition1.Width = GridLength.Auto;
myGridTitle.ColumnDefinitions.Add(ColumnDefinition1);
ColumnDefinition ColumnDefinition2 = new ColumnDefinition();
ColumnDefinition2.Width = GridLength.Auto;
myGridTitle.ColumnDefinitions.Add(ColumnDefinition2);
myGridTitle.RowDefinitions.Add(new RowDefinition());
myGridTitle.Children.Add(button1);
myGridTitle.Children.Add(button2);
Grid.SetColumn(myGridTitle, 0);
Grid.SetRow(myGridTitle, 0);
myGrid.Children.Add(myGridTitle);
TextBox text = new TextBox();
text.Margin = new Thickness(10, 80, 0, 0);
text.Height = 150;
Grid.SetColumn(text, 0);
Grid.SetRow(text, 1);
Grid.SetRowSpan(text, 2);
text.Text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n\naaaaaaaaaaaaaaaf";
myGrid.Children.Add(text);
// Define a ScrollViewer
myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
// Add Layout control
myGrid.HorizontalAlignment = HorizontalAlignment.Left;
myGrid.VerticalAlignment = VerticalAlignment.Top;
// Add the StackPanel as the lone Child of the Border
myScrollViewer.Content = myGrid;
// Add the Border as the Content of the Parent Window Object
this.Content = myScrollViewer;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
myGrid.ColumnDefinitions.Add(new ColumnDefinition());
myGrid.Width += width;
myGridTitle.Width = myGrid.Width;
Grid.SetColumnSpan(myGridTitle, myGrid.ColumnDefinitions.Count());
myScrollViewer.ScrollToRightEnd();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
myGrid.ColumnDefinitions.RemoveAt(myGrid.ColumnDefinitions.Count() - 1);
myGrid.Width -= width;
myGridTitle.Width = myGrid.Width;
Grid.SetColumnSpan(myGridTitle, myGrid.ColumnDefinitions.Count());
}
}