预约用的表格

来源:互联网 发布:怎么看网络是否稳定 编辑:程序博客网 时间:2024/04/29 09:31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// UserControl1.xaml 的交互逻辑
    /// </summary>
    public partial class UserControl1 : UserControl
    {
        ScrollViewer myScrollViewer = new ScrollViewer();

        GridColumn gridColumn1 = new GridColumn();
        GridColumn gridColumn2 = new GridColumn();

        public Grid myGrid = new Grid();

        public UserControl1()
        {
            InitializeComponent();
        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {

            // Define a ScrollViewer
            myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;


            myGrid.ColumnDefinitions.Add(new ColumnDefinition());
            myGrid.ColumnDefinitions.Add(new ColumnDefinition());
            myGrid.RowDefinitions.Add(new RowDefinition());

            // Add the StackPanel as the lone Child of the Border
            myScrollViewer.Content = myGrid;


            gridColumn1.controlTemplateRight = (ControlTemplate)(this.Resources["ButtonRight"]);
            gridColumn1.controlTemplateLeft = (ControlTemplate)(this.Resources["ButtonLeft"]);

            gridColumn1.Init();

            gridColumn2.controlTemplateRight = (ControlTemplate)(this.Resources["ButtonRight"]);
            gridColumn2.controlTemplateLeft = (ControlTemplate)(this.Resources["ButtonLeft"]);

            gridColumn2.Init();


            Grid.SetColumn(gridColumn1.myGrid, 0);
            Grid.SetRow(gridColumn1.myGrid, 0);
            myGrid.Children.Add(gridColumn1.myGrid);


            Grid.SetColumn(gridColumn2.myGrid, 1);
            Grid.SetRow(gridColumn2.myGrid, 0);
            myGrid.Children.Add(gridColumn2.myGrid);

            // Add the Border as the Content of the Parent Window Object
            this.Content = myScrollViewer;
        }

        //private void button1_Click(object sender, RoutedEventArgs e)
        //{
        //    gridColumn.myGrid.ColumnDefinitions.Add(new ColumnDefinition());
        //    gridColumn.myGrid.Width += width;
        //    gridColumn.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());
        //}

    }

    public class GridColumn
    {
        public Grid myGridTitle = new Grid();
        public Grid myGrid = new Grid();

        public double width = 0;

        public ControlTemplate controlTemplateLeft;
        public ControlTemplate controlTemplateRight;

        public GridColumn()
        {
        }
        public void Init()
        {
            width = 60;
            myGrid.Width = 60;
            myGrid.Height = 320;

            myGrid.HorizontalAlignment = HorizontalAlignment.Left;
            myGrid.VerticalAlignment = VerticalAlignment.Top;

            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());


            myGridTitle.Width = myGrid.Width;
            myGridTitle.Height = 30;


            SetTitle();
            SetBorder();

            TextBox text = new TextBox();
            text.Margin = new Thickness(10, 20, 20, 5);
            text.Height = 150;
            Grid.SetColumn(text, 0);
            Grid.SetRow(text, 1);
            Grid.SetRowSpan(text, 2);
            text.Text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n\naaaaaaaaaaaaaaaf";
            myGrid.Children.Add(text);


            // Add Layout control
            myGrid.HorizontalAlignment = HorizontalAlignment.Left;
            myGrid.VerticalAlignment = VerticalAlignment.Top;


            
        }

        private void SetTitle()
        {
            Grid myGridTitleTemp = new Grid();
            Button button1 = new Button();
            button1.Template = controlTemplateRight;
            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 = controlTemplateLeft;
            button2.Click += button2_Click;

            button2.Background = Brushes.Red;
            button2.Width = 30;

            Grid.SetColumn(button2, 1);
            Grid.SetRow(button2, 0);

            myGridTitleTemp.ColumnDefinitions.Add(new ColumnDefinition());
            ColumnDefinition ColumnDefinition1 = new ColumnDefinition();
            ColumnDefinition1.Width = GridLength.Auto;
            myGridTitleTemp.ColumnDefinitions.Add(ColumnDefinition1);
            ColumnDefinition ColumnDefinition2 = new ColumnDefinition();
            ColumnDefinition2.Width = GridLength.Auto;
            myGridTitleTemp.ColumnDefinitions.Add(ColumnDefinition2);
            myGridTitleTemp.RowDefinitions.Add(new RowDefinition());

            myGridTitleTemp.Children.Add(button1);
            myGridTitleTemp.Children.Add(button2);

            Grid.SetColumn(myGridTitleTemp, 0);
            Grid.SetRow(myGridTitleTemp, 0);

            var border = new Border() { BorderBrush = new SolidColorBrush(Colors.Gray), BorderThickness = new Thickness(1) };
           

            Grid.SetRow(border, 0);
            Grid.SetColumn(border, 0);
            Grid.SetColumnSpan(border, 3);

            border.Child = myGridTitleTemp;

            myGridTitle.Children.Add(border);

            myGrid.Children.Add(myGridTitle);
        }

        private void SetBorder()
        {
            //确定行和列数
            var rows = myGrid.RowDefinitions.Count;
            var columns = myGrid.ColumnDefinitions.Count;

            //每个格子添加一个Border进去
            for (int i = 1; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    var border = new Border() { BorderBrush = new SolidColorBrush(Colors.Gray), BorderThickness = new Thickness(1) };
                    Grid.SetRow(border, i);
                    Grid.SetColumn(border, j);

                    myGrid.Children.Add(border);
                }
            }
        }


        private void SetBorder(int column)
        {
            //确定行和列数
            var rows = myGrid.RowDefinitions.Count;
            var columns = myGrid.ColumnDefinitions.Count;

            //每个格子添加一个Border进去
            for (int i = 1; i < rows; i++)
            {
                var border = new Border() { BorderBrush = new SolidColorBrush(Colors.Gray), BorderThickness = new Thickness(0, 0, 1, 0.5) };
                

                    Grid.SetRow(border, i);
                    Grid.SetColumn(border, column);

                    myGrid.Children.Add(border);
            }

        }

        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());

            SetBorder(myGrid.ColumnDefinitions.Count() - 1);
        }


        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());
        }
    }
}





<UserControl x:Class="WpfApplication1.UserControl1"
             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>




原创粉丝点击