Я новичок в WPF, я собираюсь реализовать представление Диаграммы Ганта с соответствующей датой и временем. Когда я попытался, я могу составить представление Ганта, но не с соответствующей датой и временем, может ли кто-нибудь помочь мне изthis.
Я хочу реализовать то же самое с соответствующими динамическими и статическими значениями времени и даты.
Заранее спасибо ..
Ожидаемый ГанттВид ![](https://i.stack.imgur.com/42Ew0.png)
, но текущий агрегат, как показано ниже: ![](https://i.stack.imgur.com/zEel8.png)
Ниже приведен мой код 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:
код выше только с соответствующей датой, но
Я хочу реализовать то же самое с соответствующим временем и датой, динамически не статично.