<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Catel.Windows.Controls"
xmlns:localconverters="clr-namespace:Catel.Windows.Data.Converters"
xmlns:Controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit">
<!-- Converters -->
<localconverters:CountCollapsedConverter x:Key="CountCollapsedConverter"/>
<!-- Brushes -->
<SolidColorBrush x:Key="InfoBarMessageBackgroundBrush" Color="LightYellow" />
<SolidColorBrush x:Key="InfoBarMessageSeparatorBrush" Color="Black" />
<SolidColorBrush x:Key="InfoBarMessageErrorTextBackgroundBrush" Color="LightYellow" />
<SolidColorBrush x:Key="InfoBarMessageErrorTextColorBrush" Color="Red" />
<SolidColorBrush x:Key="InfoBarMessageWarningTextColorBrush" Color="Orange" />
<!-- Style -->
<Style TargetType="local:InfoBarMessageControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:InfoBarMessageControl">
<Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
<!-- Yellow message bar -->
<Controls:DockPanel x:Name="messageDockPanel" LastChildFill="True">
<StackPanel Controls:DockPanel.Dock="Top" Background="{StaticResource InfoBarMessageBackgroundBrush}"
Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=MessageCount, Converter={StaticResource CountCollapsedConverter}}">
<!-- Actual text -->
<TextBlock Name="infoBarTextBlock" Padding="4,2,4,2"
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=InfoMessage}" />
<!-- Line -->
<Line Name="infoBarSeparator" Margin="0" Controls:DockPanel.Dock="Bottom" Stroke="{StaticResource InfoBarMessageSeparatorBrush}"
X1="0" X2="1" Stretch="UniformToFill" Width="{Binding ElementName=messageDockPanel, Path=ActualWidth}" />
</StackPanel>
<!-- Actual content -->
<ContentPresenter />
</Controls:DockPanel>
<!-- Popup -->
<!-- TODO: probably, we need to find a way to set the placementtarget which is of course not supported by Silverlight -->
<Popup IsOpen="{Binding ElementName=infoBarTextBlock, Path=IsMouseOver, Mode=OneWay}"
Width="{Binding ElementName=messageDockPanel, Path=ActualWidth}">
<Grid Background="{StaticResource InfoBarMessageErrorTextBackgroundBrush}"
DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
<!-- Column definitions -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- Row definitions -->
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- List of errors -->
<ItemsControl Grid.Row="0" x:Name="errorMessagesItemsControl" ItemsSource="{Binding ErrorMessageCollection}" Height="Auto" VerticalAlignment="Top"
Visibility="{Binding ElementName=errorMessagesItemsControl, Path=Items.Count, Converter={StaticResource CountCollapsedConverter}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<!-- Column definitions -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- Content -->
<Image Grid.Column="0" Source="/Catel.Windows;component/Resources/Images/Error.png" Margin="2,2,4,2" Width="16" Height="16"/>
<TextBlock Grid.Column="1" Foreground="{StaticResource InfoBarMessageErrorTextColorBrush}" Text="{Binding}" TextWrapping="Wrap" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!-- List of warnings -->
<ItemsControl Grid.Row="1" x:Name="warningMessagesItemsControl" ItemsSource="{Binding WarningMessageCollection}" Height="Auto" VerticalAlignment="Top"
Visibility="{Binding ElementName=warningMessagesItemsControl, Path=Items.Count, Converter={StaticResource CountCollapsedConverter}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<!-- Column definitions -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- Content -->
<Image Grid.Column="0" Source="/Catel.Windows;component/Resources/Images/Warning.png" Margin="2,2,4,2" Width="16" Height="16"/>
<TextBlock Grid.Column="1" Foreground="{StaticResource InfoBarMessageWarningTextColorBrush}" Text="{Binding}" TextWrapping="Wrap" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!-- Line -->
<Line Grid.Row="2" Margin="0" Stroke="{StaticResource InfoBarMessageSeparatorBrush}" X1="0" X2="1"
Stretch="UniformToFill" Width="{Binding ElementName=messageDockPanel, Path=ActualWidth}" />
</Grid>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>