You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
247 lines
16 KiB
247 lines
16 KiB
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:local="clr-namespace:MultiTerm.Wpf.CustomControl"
|
|
xmlns:vm="clr-namespace:MultiTerm.Core.ViewModel;assembly=MultiTerm.Core"
|
|
xmlns:wpftk="clr-namespace:WpfToolkit.Controls;assembly=VirtualizingWrapPanel"
|
|
xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
|
|
|
<Style TargetType="{x:Type local:MultiFormatDataView}">
|
|
<Style.Resources>
|
|
<!-- Brushes -->
|
|
<SolidColorBrush x:Key="CHAR_Background" Color="#B4FFFF"/>
|
|
<SolidColorBrush x:Key="HEX_Background" Color="#C8C8FF"/>
|
|
<SolidColorBrush x:Key="BIN_Background" Color="#B4FFB4"/>
|
|
<!-- Value Converters -->
|
|
<!-- n/a -->
|
|
|
|
<DataTemplate x:Key="dataContainerTemplate" DataType="vm:IDataViewModel">
|
|
<DataTemplate.Resources>
|
|
<!-- Styling for all labels (data items) -->
|
|
<Style TargetType="Label">
|
|
<Setter Property="FontFamily" Value="Consolas"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="FontWeight" Value="ExtraLight"/>
|
|
</Style>
|
|
</DataTemplate.Resources>
|
|
<StackPanel Orientation="Vertical" Margin="0" x:Name="ItemStackPanel">
|
|
<StackPanel.Triggers>
|
|
<EventTrigger SourceName="ItemStackPanel" RoutedEvent="Loaded">
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemStackPanel"
|
|
Storyboard.TargetProperty="(local:MultiFormatDataView.ItemLoaded)">
|
|
<DiscreteObjectKeyFrame KeyTime="0:0:0">
|
|
<DiscreteObjectKeyFrame.Value>
|
|
<sys:Boolean>True</sys:Boolean>
|
|
</DiscreteObjectKeyFrame.Value>
|
|
</DiscreteObjectKeyFrame>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
<EventTrigger SourceName="ItemStackPanel" RoutedEvent="Unloaded">
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemStackPanel"
|
|
Storyboard.TargetProperty="(local:MultiFormatDataView.ItemUnloaded)">
|
|
<DiscreteObjectKeyFrame KeyTime="0:0:0">
|
|
<DiscreteObjectKeyFrame.Value>
|
|
<sys:Boolean>True</sys:Boolean>
|
|
</DiscreteObjectKeyFrame.Value>
|
|
</DiscreteObjectKeyFrame>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
</StackPanel.Triggers>
|
|
<!-- Character -->
|
|
<Border BorderThickness="0">
|
|
<Label Content="{Binding DisplayStringChar}" Padding="0" Margin="2 0" VerticalAlignment="Center">
|
|
<Label.Style>
|
|
<Style TargetType="Label">
|
|
<Setter Property="HorizontalAlignment" Value="Left"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=cbHex,Path=IsChecked}" Value="True">
|
|
<Setter Property="HorizontalAlignment" Value="Right"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=cbBin,Path=IsChecked}" Value="True">
|
|
<Setter Property="HorizontalAlignment" Value="Right"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Label.Style>
|
|
</Label>
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=cbCharacter,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=cbHex,Path=IsChecked}" Value="True">
|
|
<Setter Property="Background" Value="{StaticResource CHAR_Background}"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=cbBin,Path=IsChecked}" Value="True">
|
|
<Setter Property="Background" Value="{StaticResource CHAR_Background}"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
</Border>
|
|
<!-- Hexadecimal -->
|
|
<Border BorderThickness="0" Background="{StaticResource HEX_Background}">
|
|
<Label Content="{Binding DisplayStringHex}" HorizontalAlignment="Right" VerticalAlignment="Center" Padding="0" Margin="2 0"/>
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=cbHex,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
</Border>
|
|
<!-- Binary -->
|
|
<Border BorderThickness="0" Background="{StaticResource BIN_Background}">
|
|
<Label Content="{Binding DisplayStringBin}" HorizontalAlignment="Right" VerticalAlignment="Center" Padding="0" Margin="2"/>
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=cbBin,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
</Border>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</Style.Resources>
|
|
|
|
<!-- Template -->
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type local:MultiFormatDataView}">
|
|
<DockPanel>
|
|
<GroupBox Header="Display Formats" DockPanel.Dock="Top">
|
|
<!-- Top row with options and buttons -->
|
|
<DockPanel LastChildFill="False" Margin="5 0">
|
|
<!-- Format selectors -->
|
|
<CheckBox DockPanel.Dock="Left" Content="Character" VerticalAlignment="Center" VerticalContentAlignment="Center" x:Name="cbCharacter" Padding="10 0 30 0" IsChecked="True"/>
|
|
<CheckBox DockPanel.Dock="Left" Content="Hexadecimal" VerticalAlignment="Center" VerticalContentAlignment="Center" x:Name="cbHex" Padding="10 0 30 0"/>
|
|
<CheckBox DockPanel.Dock="Left" Content="Binary" VerticalAlignment="Center" VerticalContentAlignment="Center" x:Name="cbBin" Padding="10 0 30 0"/>
|
|
<!-- Clear Button -->
|
|
<Button DockPanel.Dock="Right" x:Name="PART_ButtonClear" Width="Auto" Padding="7 2" Content="Clear" />
|
|
</DockPanel>
|
|
</GroupBox>
|
|
<!-- Grid that contains main control and a realited items count on top -->
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="40"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Simple Text View -->
|
|
<TextBox Name="PART_CharOnlyTextBox"
|
|
Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"
|
|
IsReadOnly="True"
|
|
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
|
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
|
ScrollViewer.CanContentScroll="true"
|
|
ScrollViewer.PanningMode="VerticalOnly">
|
|
|
|
<!-- Show only when other checkboxes than "Characters" is checked -->
|
|
<TextBox.Style>
|
|
<Style TargetType="TextBox">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=cbCharacter,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=cbBin,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=cbHex,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBox.Style>
|
|
|
|
</TextBox>
|
|
|
|
<!-- MultiFormat Items Control -->
|
|
<ListView Name="PART_ItemsControl"
|
|
Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"
|
|
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
|
ScrollViewer.CanContentScroll="true"
|
|
ScrollViewer.PanningMode="VerticalOnly"
|
|
HorizontalAlignment="Stretch"
|
|
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
|
|
VirtualizingPanel.CacheLengthUnit="Item"
|
|
VirtualizingPanel.VirtualizationMode="Standard"
|
|
ItemTemplate="{StaticResource dataContainerTemplate}"
|
|
SelectionMode="Extended">
|
|
|
|
<!-- Hide when only "Characters" checkbox is checked -->
|
|
<ListView.Style>
|
|
<Style TargetType="ListView">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=cbBin,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=cbHex,Path=IsChecked}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</ListView.Style>
|
|
|
|
<ListView.ItemContainerStyle>
|
|
<Style TargetType="ListViewItem">
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
|
<Setter Property="VerticalContentAlignment" Value="Stretch" />
|
|
<Setter Property="Margin" Value="0"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
</Style>
|
|
</ListView.ItemContainerStyle>
|
|
|
|
<ListView.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<wpftk:VirtualizingWrapPanel Orientation="Vertical" SpacingMode="Uniform" StretchItems="True"/>
|
|
</ItemsPanelTemplate>
|
|
</ListView.ItemsPanel>
|
|
|
|
<ListView.GroupStyle>
|
|
<GroupStyle HidesIfEmpty="True">
|
|
<GroupStyle.HeaderTemplate>
|
|
<DataTemplate>
|
|
<Separator Height="0"></Separator>
|
|
</DataTemplate>
|
|
</GroupStyle.HeaderTemplate>
|
|
</GroupStyle>
|
|
</ListView.GroupStyle>
|
|
|
|
</ListView>
|
|
|
|
<!-- Realized Items Display (on top of ListView because if comes later in the list) -->
|
|
<StackPanel Grid.Column="0" Grid.Row="0" Margin="5 5 25 5" Grid.ZIndex="1" Background="Azure"
|
|
Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Right">
|
|
<Label Content="Realized Items: " HorizontalAlignment="Left" Margin="0 0 0 0"/>
|
|
<Label Width="40" HorizontalContentAlignment="Right" Content="{TemplateBinding RealizedItemsCount}"/>
|
|
</StackPanel>
|
|
|
|
</Grid>
|
|
</DockPanel>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</ResourceDictionary> |