Как нарисовать прямоугольную сетку на Tablegrid на основе времени начала и времени окончания - PullRequest
0 голосов
/ 25 сентября 2018

Я новичок в c #, WPF,

В настоящее время я могу нарисовать прямоугольную решетку так: enter image description here, используя мой код WPF:

<Window x:Class="FunctionalFun.UI.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp_Ui_dESIGN"
        xmlns:gc="clr-namespace:FunctionalFun.UI"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid Name="myFirstGrid" Width="1000" Height="314" Canvas.Top="206">

        <Grid.Resources>
            <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">
                <gc:Task  Name="Task 1" Start="05:00" End="12:10"/>

            </x:Array>

        </Grid.Resources>

        <Grid.RowDefinitions>
            <RowDefinition Height="10"/>
        </Grid.RowDefinitions>
        <Grid.Effect>
            <DropShadowEffect Color="#FFDEDADA" ShadowDepth="3"/>
        </Grid.Effect>
        <ItemsControl Grid.Row="0"  ItemsSource="{StaticResource Tasks}" Margin="50,30,0,-50">

            <ItemsControl.ItemContainerStyle>
                <Style>

                    <Setter Property="gc:GanttRowPanel.StartDate" Value="{Binding Path=Start}"/>
                    <Setter Property="gc:GanttRowPanel.EndDate" Value="{Binding Path=End}"/>
                </Style>

            </ItemsControl.ItemContainerStyle>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="#FF007F99" BorderThickness="0.1" CornerRadius="15,15,15,15">
                        <Border.Background>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="#FF2FD9FD" Offset="0"/>
                                <GradientStop Color="#FFCAF6FF" Offset="0.112"/>
                                <GradientStop Color="#FF47D8F7" Offset="1"/>
                            </LinearGradientBrush>
                        </Border.Background>
                        <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="{Binding Path=Name}"/>
                    </Border>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</Window>

и файл Task.cs

namespace FunctionalFun.UI
{
    public class Task
    {
        public string Name { get; set; }
        public DateTime Start { get; set; }
        public DateTime End { get; set; }
    }
}

Даты по горизонтальной оси, мне нужно отобразить сетку на основе двух дат из двух разных столбцов.

Все данные сетки, размещенные поверх таблицы AS, показаны ниже: enter image description here

Например, если дата начала - 9/8/2016 и дата окончания13.08.2016, тогда мне нужно построить сетку из пяти столбцов.

Пожалуйста, помогите мне решить эту проблему.

...