динамическая диаграмма Ганта / ракурс с соответствующей датой и временем в WPF, C # - PullRequest
0 голосов
/ 21 сентября 2018

Я новичок в WPF, я собираюсь реализовать представление Диаграммы Ганта с соответствующей датой и временем. Когда я попытался, я могу составить представление Ганта, но не с соответствующей датой и временем, может ли кто-нибудь помочь мне изthis.

Я хочу реализовать то же самое с соответствующими динамическими и статическими значениями времени и даты.

Заранее спасибо ..

Ожидаемый ГанттВид

, но текущий агрегат, как показано ниже:

Ниже приведен мой код WPF:

<Window x:Class="FunctionalFun.UI.ItemsControlExample"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:gc="clr-namespace:FunctionalFun.UI"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"

    Title="Gantt Example" Height="708" Width="1080">
    <Grid>

        <DataGrid AutoGenerateColumns="True" ColumnHeaderHeight="50" RowHeight="50" ColumnWidth="250" ItemsSource="{Binding}" RenderTransformOrigin="3.25,5.846" Height="526" Width="931" Canvas.Top="70" Canvas.Left="69">

        </DataGrid>
        <Grid Name="firstGrid" Width="Auto" Height="Auto">

            <Grid.Resources>
                <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">
                    <gc:Task Name="Task 1" Start="03:45" End="10: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="100,80,0,-100">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <gc:GanttRowPanel MinDate="03:45" MaxDate="23:00"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <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">
                            <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>

        <Grid Width="Auto" Height="Auto">

            <Grid.Resources>
                <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">

                    <gc:Task Name="Task 2" Start="10:10" End="22:00"/>


                </x:Array>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
            </Grid.RowDefinitions>
            <ItemsControl Grid.Row="1"  ItemsSource="{StaticResource Tasks}" Margin="60,120,0,-140">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <gc:GanttRowPanel MinDate="03:45" MaxDate="23:00"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <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">
                            <Border.Background>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#d1b57f" Offset="0"/>
                                    <GradientStop Color="#d1b57f" Offset="0.112"/>
                                    <GradientStop Color="#d1b57f" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.Background>
                            <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="{Binding Path=Name}"/>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Grid>

        <Grid Width="Auto" Height="Auto">

            <Grid.Resources>
                <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">

                    <gc:Task Name="Task 3" Start="08:10" End="18:00"/>


                </x:Array>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
            </Grid.RowDefinitions>
            <ItemsControl Grid.Row="2"  ItemsSource="{StaticResource Tasks}" Margin="60,160,0,-180">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <gc:GanttRowPanel MinDate="03:45" MaxDate="23:00"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <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">
                            <Border.Background>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#aa4206" Offset="0"/>
                                    <GradientStop Color="#aa4206" Offset="0.112"/>
                                    <GradientStop Color="#aa4206" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.Background>
                            <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="{Binding Path=Name}"/>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Grid>

        <Grid Width="Auto" Height="Auto">

            <Grid.Resources>
                <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">

                    <gc:Task Name="Task 4" Start="03:10" End="11:00"/>

                </x:Array>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
            </Grid.RowDefinitions>
            <ItemsControl Grid.Row="2"  ItemsSource="{StaticResource Tasks}" Margin="60,200,0,-220">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <gc:GanttRowPanel MinDate="03:00" MaxDate="23:00"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <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">
                            <Border.Background>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#f7dd16" Offset="0"/>
                                    <GradientStop Color="#f7dd16" Offset="0.112"/>
                                    <GradientStop Color="#f7dd16" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.Background>
                            <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="{Binding Path=Name}"/>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Grid>

        <Grid Width="Auto" Height="Auto">

            <Grid.Resources>
                <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">

                    <gc:Task Name="Task 5" Start="17:10" End="23:00"/>

                </x:Array>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
            </Grid.RowDefinitions>
            <ItemsControl Grid.Row="4"  ItemsSource="{StaticResource Tasks}" Margin="60,240,0,-260">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <gc:GanttRowPanel MinDate="03:00" MaxDate="23:00"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <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">
                            <Border.Background>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#c4ef6e" Offset="0"/>
                                    <GradientStop Color="#c4ef6e" Offset="0.112"/>
                                    <GradientStop Color="#c4ef6e" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.Background>
                            <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="{Binding Path=Name}"/>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Grid>

        <Grid Width="Auto" Height="Auto">

            <Grid.Resources>
                <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">

                    <gc:Task Name="Task 7" Start="07:10" End="17:30"/>

                </x:Array>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
            </Grid.RowDefinitions>
            <ItemsControl Grid.Row="5"  ItemsSource="{StaticResource Tasks}" Margin="60,280,0,-300">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <gc:GanttRowPanel MinDate="03:00" MaxDate="23:00"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <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">
                            <Border.Background>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#7bb507" Offset="0"/>
                                    <GradientStop Color="#7bb507" Offset="0.112"/>
                                    <GradientStop Color="#7bb507" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.Background>
                            <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="{Binding Path=Name}"/>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Grid>

        <Grid Width="Auto" Height="Auto">

            <Grid.Resources>
                <x:Array x:Key="Tasks" Type="{x:Type gc:Task}">

                    <gc:Task Name="Task 6" Start="07:10" End="17:30"/>

                </x:Array>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
            </Grid.RowDefinitions>
            <ItemsControl Grid.Row="7"  ItemsSource="{StaticResource Tasks}" Margin="60,280,0,-300">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <gc:GanttRowPanel MinDate="03:00" MaxDate="23:00"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <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">
                            <Border.Background>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#7bb507" Offset="0"/>
                                    <GradientStop Color="#7bb507" Offset="0.112"/>
                                    <GradientStop Color="#7bb507" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.Background>
                            <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="{Binding Path=Name}"/>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Grid>

    </Grid>
</Window>

Обновление 1:

код выше только с соответствующей датой, но

Я хочу реализовать то же самое с соответствующим временем и датой, динамически не статично.

...