using System; using System.ComponentModel; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Media; using System.Windows.Shapes; using System.Windows.Markup; using System.Windows.Threading; namespace TawamureDays { /// <summary> /// DataGrid マルチカラムヘッダ用コントロール /// </summary> [ContentProperty("Content")] public class DataGridMultiHeader : ContentControl { #region コンストラクタ /// <summary> /// staticコンストラクタ /// </summary> static DataGridMultiHeader() { DefaultStyleKeyProperty.OverrideMetadata(typeof(DataGridMultiHeader), new FrameworkPropertyMetadata(typeof(DataGridMultiHeader))); } #endregion } }
/// <summary> /// セル用パネルの水平方向オフセット値を取得|設定します。 /// </summary> private double CellsPanelHorizontalOffset { get { return (double)GetValue(CellsPanelHorizontalOffsetProperty); } set { SetValue(CellsPanelHorizontalOffsetProperty, value); } } /// <summary>セル用パネルの水平方向オフセット値</summary> private static readonly DependencyProperty CellsPanelHorizontalOffsetProperty = DependencyProperty.Register("CellsPanelHorizontalOffset", typeof(double), typeof(DataGridMultiHeader), new UIPropertyMetadata(0D)); /// <summary> /// 非固定列ViewPort(表示スペース)の水平方向オフセット値を取得|設定します。 /// </summary> private double NonFrozenColumnsViewportHorizontalOffset { get { return (double)GetValue(NonFrozenColumnsViewportHorizontalOffsetProperty); } set { SetValue(NonFrozenColumnsViewportHorizontalOffsetProperty, value); } } /// <summary>非固定列ViewPort(表示スペース)の水平方向オフセット値</summary> private static readonly DependencyProperty NonFrozenColumnsViewportHorizontalOffsetProperty = DependencyProperty.Register("NonFrozenColumnsViewportHorizontalOffset", typeof(double), typeof(DataGridMultiHeader), new UIPropertyMetadata(0D)); /// <summary> /// 垂直方向のスクロールバーの可視状態を取得|設定します。 /// </summary> private Visibility VerticalScrollBarVisibility { get { return (Visibility)GetValue(VerticalScrollBarVisibilityProperty); } set { SetValue(VerticalScrollBarVisibilityProperty, value); } } /// <summary>垂直方向のスクロールバーの可視状態</summary> private static readonly DependencyProperty VerticalScrollBarVisibilityProperty = DependencyProperty.Register("VerticalScrollBarVisibility", typeof(Visibility), typeof(DataGridMultiHeader), new UIPropertyMetadata(Visibility.Visible)); /// <summary> /// 垂直方向のスクロールバーの幅を取得|設定します。 /// </summary> private double VerticalScrollBarWidth { get { return (double)GetValue(VerticalScrollBarWidthProperty); } set { SetValue(VerticalScrollBarWidthProperty, value); } } /// <summary>垂直方向のスクロールバーの幅</summary> private static readonly DependencyProperty VerticalScrollBarWidthProperty = DependencyProperty.Register("VerticalScrollBarWidth", typeof(double), typeof(DataGridMultiHeader), new UIPropertyMetadata(0D));
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:TawamureDays"> <Style TargetType="{x:Type local:DataGridMultiHeader}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:DataGridMultiHeader}"> <DockPanel> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True" DockPanel.Dock="Top"> </Border> <ContentPresenter/> </DockPanel> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>
Author:チャプターマン
FC2ブログへようこそ!