MESCIUS InputMan for WPF 3.0J
ListBox.xaml

ListBox.xaml では、リストコントロールの外観を定義します。

ListBox.xaml の内容は以下のとおりです。

ListBox.xaml の内容
<ResourceDictionary
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:im="clr-namespace:GrapeCity.Windows.InputMan;assembly=GrapeCity.WPF.InputMan"
  xmlns:imp="clr-namespace:GrapeCity.Windows.InputMan.Primitives;assembly=GrapeCity.WPF.InputMan"
  xmlns:system="clr-namespace:System;assembly=mscorlib">
  
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/GrapeCity.WPF.InputMan;component/Themes/Generic/Common.xaml"/>
  </ResourceDictionary.MergedDictionaries>
  <!--ListHeader-->
  <Style TargetType="{x:Type imp:ListHeader}" x:Key="ListHeader_StyleKey">
    <Setter Property="Foreground" Value="#FF000000" />
    <Setter Property="HorizontalContentAlignment" Value="Left" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="SeptorBrush" Value="#FFC9CACA" />
    <Setter Property="Padding" Value="4" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type imp:ListHeader}">
          <Grid SnapsToDevicePixels="true">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="MouseOver">
                  <Storyboard>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Fill).Color" To="#FF448DCA"/>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" To="#7FFFFFFF"/>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" To="#CCFFFFFF"/>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" To="#F2FFFFFF"/>
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Pressed">
                  <Storyboard>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Fill).Color" To="#FF448DCA"/>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[0].Color" To="#D8FFFFFF"/>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" To="#C6FFFFFF"/>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" To="#8CFFFFFF"/>
                    <ColorAnimation Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" To="#3FFFFFFF"/>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              <VisualStateGroup x:Name="SortStates">
                <VisualState x:Name="Unsorted" />
                <VisualState x:Name="SortAscending">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0"/>
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="SortDescending">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0"/>
                    <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="(RenderTransform).ScaleY" Duration="0" To="-.9"/>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>

            <Grid.ColumnDefinitions>
              <ColumnDefinition/>
              <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <Rectangle x:Name="BackgroundRectangle" Stretch="Fill" Fill="#FF1F3B53" Grid.ColumnSpan="2" />
            <Rectangle x:Name="BackgroundGradient" Stretch="Fill" Grid.ColumnSpan="2" >
              <Rectangle.Fill>
                <LinearGradientBrush StartPoint=".7,0" EndPoint=".7,1">
                  <GradientStop Color="#FCFFFFFF" Offset="0.015" />
                  <GradientStop Color="#F7FFFFFF" Offset="0.375" />
                  <GradientStop Color="#E5FFFFFF" Offset="0.6" />
                  <GradientStop Color="#D1FFFFFF" Offset="1" />
                </LinearGradientBrush>
              </Rectangle.Fill>
            </Rectangle>

            <Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}">
              <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="Auto" />
              </Grid.ColumnDefinitions>

              <ContentPresenter 
                Content="{TemplateBinding Content}"
                ContentTemplate="{TemplateBinding ContentTemplate}"
                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>

              <Path Grid.Column="1" Name="SortIcon" Fill="{TemplateBinding Foreground}" RenderTransformOrigin=".5,.5" HorizontalAlignment="Left" VerticalAlignment="Center" Opacity="0" Stretch="Uniform" Width="8" Margin="4,0,0,0" Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z ">
                <Path.RenderTransform>
                  <ScaleTransform ScaleX=".9" ScaleY=".9" />
                </Path.RenderTransform>
              </Path>
            </Grid>

            <Rectangle Name="VerticalSeptor" Grid.Column="1" Width="1" VerticalAlignment="Stretch" Fill="{TemplateBinding SeptorBrush}"/>
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  <Style TargetType="{x:Type imp:ListHeader}" BasedOn="{StaticResource ListHeader_StyleKey}"/>

  <!--ListBox-->
  <Style TargetType="{x:Type im:GcListBox}" x:Key="GcListBox_StyleKey">
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="BorderBrush" Value="{StaticResource ListBoxBorderBrush}"/>
    <Setter Property="Background" Value="#FFFFFFFF" />
    <Setter Property="Foreground" Value="#FF000000"/>
    <Setter Property="HorizontalContentAlignment" Value="Left" />
    <Setter Property="VerticalContentAlignment" Value="Top" />
    <Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
    <Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ItemCheckBoxStyle">
      <Setter.Value>
        <Style TargetType="CheckBox">
          <Setter Property="Margin" Value="2,0,0,0"/>
          <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
      </Setter.Value>
    </Setter>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type im:GcListBox}">
          <Grid SnapsToDevicePixels="true">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal"/>
                <VisualState x:Name="Disabled">
                  <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledVisualElement">
                      <DiscreteObjectKeyFrame KeyTime="0">
                        <DiscreteObjectKeyFrame.Value>
                          <Visibility>Visible</Visibility>
                        </DiscreteObjectKeyFrame.Value>
                      </DiscreteObjectKeyFrame>
                    </ObjectAnimationUsingKeyFrames>
                    <DoubleAnimation Storyboard.TargetName="HeaderDisabledVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To="0.5"/>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Border CornerRadius="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
              <Grid x:Name="ListBoxRoot" Margin="{TemplateBinding Padding}">
                <Grid.Resources>
                  <ControlTemplate x:Key="TopRightHeaderTemplate" TargetType="imp:ListHeader">
                    <Grid>
                      <Border BorderThickness="1,0,0,0" BorderBrush="#FFC9CACA" Background="#FF1F3B53">
                        <Rectangle Stretch="Fill">
                          <Rectangle.Fill>
                            <LinearGradientBrush StartPoint=".7,0" EndPoint=".7,1">
                              <GradientStop Color="#FCFFFFFF" Offset="0.015" />
                              <GradientStop Color="#F7FFFFFF" Offset="0.375" />
                              <GradientStop Color="#E5FFFFFF" Offset="0.6" />
                              <GradientStop Color="#D1FFFFFF" Offset="1" />
                            </LinearGradientBrush>
                          </Rectangle.Fill>
                        </Rectangle>
                      </Border>
                    </Grid>
                  </ControlTemplate>

                </Grid.Resources>
                <Grid.RowDefinitions>
                  <RowDefinition Height="auto"/>
                  <RowDefinition/>
                </Grid.RowDefinitions>

                <Grid>
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="auto"/>
                  </Grid.ColumnDefinitions>
                  <imp:ListHeadersPresenter x:Name="ListHeadersPresenter" Grid.Column="0" Height="{TemplateBinding HeaderHeight}"/>
                  <imp:ListHeader x:Name="TopRightCorner" Grid.Column="1" Template="{StaticResource TopRightHeaderTemplate}" Height="{TemplateBinding HeaderHeight}"/>
                </Grid>

                <Border x:Name="HeaderDisabledVisualElement" CornerRadius="2" IsHitTestVisible="False" Background="#8CFFFFFF" Opacity="0"  Grid.ColumnSpan="2" />
                <ScrollViewer x:Name="ScrollViewer" Grid.Row="1" Background="{TemplateBinding Background}" BorderBrush="Transparent" BorderThickness="0" 
                        HorizontalScrollBarVisibility="{TemplateBinding HorizontalScrollBarVisibility}" 
                        VerticalScrollBarVisibility="{TemplateBinding VerticalScrollBarVisibility}"
                        Focusable="True"
                        Padding="0">
                  <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"/>
                </ScrollViewer>
              </Grid>
            </Border>
            <Border x:Name="DisabledVisualElement" CornerRadius="2" IsHitTestVisible="False" Opacity="0.5" Background="#8CFFFFFF" Visibility="Collapsed"  BorderThickness="{TemplateBinding BorderThickness}" />
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  <Style TargetType="{x:Type im:GcListBox}" BasedOn="{StaticResource GcListBox_StyleKey}"/>

  <!--ListItemBase-->
  <Style TargetType="{x:Type im:ListItemBase}" x:Key="ListItemBase_StyleKey">
    <Setter Property="HorizontalContentAlignment"
        Value="{Binding Path=HorizontalContentAlignment,RelativeSource={RelativeSource AncestorType={x:Type im:GcListBox}}}"/>
    <Setter Property="VerticalContentAlignment"
        Value="{Binding Path=VerticalContentAlignment,RelativeSource={RelativeSource AncestorType={x:Type im:GcListBox}}}"/>
    <Setter Property="Padding" Value="3" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type im:ListItemBase}">
          <Grid x:Name="Root" SnapsToDevicePixels="true">
            <Grid.RowDefinitions>
              <RowDefinition/>
              <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="MouseOver">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="MouseOverVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To=".35"/>
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Disabled">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="ContentPresenterElement" Storyboard.TargetProperty="Opacity" Duration="0" To=".55" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              <VisualStateGroup x:Name="SelectionStates">
                <VisualState x:Name="Unselected" />
                <VisualState x:Name="Selected">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="SelectedVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To=".75"/>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Rectangle x:Name="BackgroundElement" Grid.RowSpan="2" Fill="{TemplateBinding Background}" IsHitTestVisible="True"/>
            <Rectangle x:Name="MouseOverVisualElement" Grid.RowSpan="2" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False"/>
            <Rectangle x:Name="SelectedVisualElement" Grid.RowSpan="2" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False"/>

            <ContentPresenter
              x:Name="ContentPresenterElement"
              Margin="{TemplateBinding Padding}"
              Content="{TemplateBinding ContentControl.Content}" 
              ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" 
              ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" 
              ContentTemplateSelector="{TemplateBinding ContentControl.ContentTemplateSelector}"
              HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" 
              VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" 
              SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
              />
            <Rectangle Grid.Row="1" x:Name="BottomGridLine" Grid.Column="0" HorizontalAlignment="Stretch" Height="3" Fill="Transparent" IsHitTestVisible="False"/>
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  <Style TargetType="{x:Type im:ListItemBase}" BasedOn="{StaticResource ListItemBase_StyleKey}"/>
  
  <!--ListItem-->
  <Style TargetType="{x:Type im:ListItem}" x:Key="ListItem_StyleKey">
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type im:ListItem}">
          <Grid x:Name="Root" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="true">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="MouseOver">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="MouseOverVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To=".35"/>
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Disabled">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="SubItemsPresenter" Storyboard.TargetProperty="Opacity" Duration="0" To=".55" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              <VisualStateGroup x:Name="SelectionStates">
                <VisualState x:Name="Unselected" />
                <VisualState x:Name="Selected">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="SelectedVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To=".75"/>
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>

            <Grid.RowDefinitions>
              <RowDefinition />
              <RowDefinition Height="auto"/>
            </Grid.RowDefinitions>
            <Rectangle x:Name="BackgroundElement" Grid.RowSpan="2" Fill="{TemplateBinding Background}" IsHitTestVisible="True"/>
            <Rectangle x:Name="MouseOverVisualElement" Grid.RowSpan="2" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False"/>
            <Rectangle x:Name="SelectedVisualElement" Grid.RowSpan="2" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False"/>

            <imp:SubItemsPresenter x:Name="SubItemsPresenter"/>
            <Rectangle x:Name="BottomGridLine" Grid.Row="1" HorizontalAlignment="Stretch" Height="3" Fill="Transparent"  IsHitTestVisible="False"/>
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  <Style TargetType="{x:Type im:ListItem}" BasedOn="{StaticResource ListItem_StyleKey}"/>

  <!--SubItem-->
  <Style TargetType="{x:Type im:SubItem}" x:Key="SubItem_StyleKey">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="Padding" Value="4" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type im:SubItem}">
          <Grid SnapsToDevicePixels="true">
            <Grid.ColumnDefinitions>
              <ColumnDefinition/>
              <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <ContentPresenter Grid.ColumnSpan="2"
              Content="{TemplateBinding Content}"
              ContentTemplate="{TemplateBinding ContentTemplate}"
              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
              Margin="{TemplateBinding Padding}" />
            <Rectangle x:Name="RightGridLine" Grid.Column="1" VerticalAlignment="Stretch" Width="3" Fill="Transparent" IsHitTestVisible="False"/>
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  <Style TargetType="{x:Type im:SubItem}" BasedOn="{StaticResource SubItem_StyleKey}"/>

</ResourceDictionary>
関連トピック

 

 


© MESCIUS inc. All rights reserved.