I have the same design and function for every column in my UI but it is very annoying to update something, since I have to do it for every column. Can someone help me to simplify it somehow? I already looked up a lot in the internet but I found no possibility, I want to do something like: <Datagridentry (push monday)> <Datagridentry (push tuesday)> and so on...
and simply one layout which gets filled with the data.
<DataGridTextColumn Binding="{Binding Path=FirstWeek.Monday.Content}" x:Name="Column1" Width="50">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock
Background="{Binding Path=DataContext.ColorsArray[0], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
HorizontalAlignment="Center"
Text="Mo"
Grid.Row="0"/>
<TextBlock
HorizontalAlignment="Center"
Text="{Binding Path=DataContext.MonthDaysDate[0], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
Grid.Row="1">
</TextBlock>
</Grid>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10,5,10,5"/>
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle >
<Style TargetType="DataGridCell">
<EventSetter Event="MouseUp" Handler="DataGridCell_PreviewMouseUp"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Visibility="{Binding FirstWeek.Monday,Converter={StaticResource ContentVisibilityConverter}}">
<StackPanel>
<TextBlock Text="{Binding FirstWeek.Monday.Dienstbezeichnung}"/>
<TextBlock Text="{Binding FirstWeek.Monday.Comment}" Visibility="{Binding FirstWeek.Monday.Comment,Converter={StaticResource ContentVisibilityConverter}}"/>
</StackPanel>
</ToolTip>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding FirstWeek.Monday, Converter={StaticResource CheckCellItem} }" Value="True"/>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{Binding FirstWeek.Monday.ContentColor, Converter={StaticResource ColorStringToColorConverter}}"></Setter>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=FirstWeek.Tuesday.Content}" x:Name="Column2" Width="50">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock
Background="{Binding Path=DataContext.ColorsArray[1], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
HorizontalAlignment="Center"
Text="Di"
Grid.Row="0" />
<TextBlock
HorizontalAlignment="Center"
Text="{Binding Path=DataContext.MonthDaysDate[1], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
Grid.Row="1"/>
</Grid>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10,5,10,5"/>
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="MouseUp" Handler="DataGridCell_PreviewMouseUp"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Visibility="{Binding FirstWeek.Tuesday,Converter={StaticResource ContentVisibilityConverter}}">
<StackPanel>
<TextBlock Text="{Binding FirstWeek.Tuesday.Dienstbezeichnung}"/>
<TextBlock Text="{Binding FirstWeek.Tuesday.Comment}" Visibility="{Binding FirstWeek.Tuesday.Comment,Converter={StaticResource ContentVisibilityConverter}}"/>
</StackPanel>
</ToolTip>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding FirstWeek.Tuesday, Converter={StaticResource CheckCellItem} }" Value="True"/>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{Binding FirstWeek.Tuesday.ContentColor, Converter={StaticResource ColorStringToColorConverter}}"></Setter>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=FirstWeek.Wednesday.Content}" Header="Mi" x:Name="Column3" Width="50">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock
Background="{Binding Path=DataContext.ColorsArray[2], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
HorizontalAlignment="Center"
Text="Mi"
Grid.Row="0" />
<TextBlock
HorizontalAlignment="Center"
Text="{Binding Path=DataContext.MonthDaysDate[2], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
Grid.Row="1"/>
</Grid>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10,5,10,5"/>
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="MouseUp" Handler="DataGridCell_PreviewMouseUp"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Visibility="{Binding FirstWeek.Wednesday,Converter={StaticResource ContentVisibilityConverter}}">
<StackPanel>
<TextBlock Text="{Binding FirstWeek.Wednesday.Dienstbezeichnung}"/>
<TextBlock Text="{Binding FirstWeek.Wednesday.Comment}" Visibility="{Binding FirstWeek.Wednesday.Comment,Converter={StaticResource ContentVisibilityConverter}}"/>
</StackPanel>
</ToolTip>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding FirstWeek.Wednesday, Converter={StaticResource CheckCellItem} }" Value="True"/>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{Binding FirstWeek.Wednesday.ContentColor, Converter={StaticResource ColorStringToColorConverter}}"></Setter>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=FirstWeek.Thursday.Content}" Header="Do" x:Name="Column4" Width="50">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock
Background="{Binding Path=DataContext.ColorsArray[3], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
HorizontalAlignment="Center"
Text="Do"
Grid.Row="0" />
<TextBlock
HorizontalAlignment="Center"
Text="{Binding Path=DataContext.MonthDaysDate[3], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
Grid.Row="1"/>
</Grid>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10,5,10,5"/>
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="MouseUp" Handler="DataGridCell_PreviewMouseUp"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Visibility="{Binding FirstWeek.Thursday,Converter={StaticResource ContentVisibilityConverter}}">
<StackPanel>
<TextBlock Text="{Binding FirstWeek.Thursday.Dienstbezeichnung}"/>
<TextBlock Text="{Binding FirstWeek.Thursday.Comment}" Visibility="{Binding FirstWeek.Thursday.Comment,Converter={StaticResource ContentVisibilityConverter}}"/>
</StackPanel>
</ToolTip>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding FirstWeek.Thursday, Converter={StaticResource CheckCellItem} }" Value="True"/>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{Binding FirstWeek.Thursday.ContentColor, Converter={StaticResource ColorStringToColorConverter}}"></Setter>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=FirstWeek.Friday.Content}" Header="Fr" x:Name="Column5" Width="50">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock
Background="{Binding Path=DataContext.ColorsArray[4], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
HorizontalAlignment="Center"
Text="Fr"
Grid.Row="0" />
<TextBlock
HorizontalAlignment="Center"
Text="{Binding Path=DataContext.MonthDaysDate[4], RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
Grid.Row="1"/>
</Grid>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10,5,10,5"/>
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="MouseUp" Handler="DataGridCell_PreviewMouseUp"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Visibility="{Binding FirstWeek.Friday,Converter={StaticResource ContentVisibilityConverter}}">
<StackPanel>
<TextBlock Text="{Binding FirstWeek.Friday.Dienstbezeichnung}"/>
<TextBlock Text="{Binding FirstWeek.Friday.Comment}" Visibility="{Binding FirstWeek.Friday.Comment,Converter={StaticResource ContentVisibilityConverter}}"/>
</StackPanel>
</ToolTip>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding FirstWeek.Friday, Converter={StaticResource CheckCellItem} }" Value="True"/>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{Binding FirstWeek.Friday.ContentColor, Converter={StaticResource ColorStringToColorConverter}}"></Setter>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>