作成日: 2026/06/24 最終更新日: 2026/06/24
文書種別
使用方法
詳細
GcSpreadGridコントロールを拡大するには、LayoutTransformプロパティに拡大率を指定したScaleTransformオブジェクトを設定します。以下にいくつかの実装例をご紹介します。
例1:[Ctrl]キーを押しながらマウスをホイールしたときに拡大する
以下のサンプルコードでは、最小10%、最大400%の拡大率に設定しています。
XAMLコードでScalsTransformオブジェクトを追加します。
◎サンプルコード(XAML)
コードビハインドでPreviewMouseWheelイベントを実装します。
◎サンプルコード(VB)
◎サンプルコード(C#)
例2:スライダーコントロールを使用してGcSpreadGridコントロールを拡大する
◎サンプルコード(XAML)
例3:スクロールバーを拡大したくない場合
以下のサンプルコードは、例2のスライダーコントロールを使用する場合を前提にしています。
◎サンプルコード(VB)
◎サンプルコード(C#)
◎サンプルコード(XAML)
例4:フィルタウィンドウを拡大する
◎サンプルコード(XAML)
例1:[Ctrl]キーを押しながらマウスをホイールしたときに拡大する
以下のサンプルコードでは、最小10%、最大400%の拡大率に設定しています。
XAMLコードでScalsTransformオブジェクトを追加します。
◎サンプルコード(XAML)
<sg:GcSpreadGrid x:Name="GcSpreadGrid1"> <sg:GcSpreadGrid.LayoutTransform> <ScaleTransform CenterX="0" CenterY="0" x:Name="st"/> </sg:GcSpreadGrid.LayoutTransform> </sg:GcSpreadGrid>
コードビハインドでPreviewMouseWheelイベントを実装します。
◎サンプルコード(VB)
Private Sub GcSpreadGrid1_PreviewMouseWheel(sender As Object, e As MouseWheelEventArgs) Handles GcSpreadGrid1.PreviewMouseWheel If (Keyboard.Modifiers And ModifierKeys.Control) > 0 Then Dim zoom As Double If e.Delta > 0 Then If st.ScaleX < 0.2 Then zoom = 0 Else zoom = -0.1 End If Else If st.ScaleX > 4 Then zoom = 0 Else zoom = 0.1 End If End If st.ScaleX += zoom st.ScaleY += zoom End If End Sub
◎サンプルコード(C#)
private void gcSpreadGrid1_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
if ((Keyboard.Modifiers & ModifierKeys.Control) > 0)
{
double zoom;
if (e.Delta < 0)
{
zoom = st.ScaleX < 0.2 ? 0 : -0.1;
}
else
{
zoom = st.ScaleX > 4 ? 0 : 0.1;
}
st.ScaleX += zoom;
st.ScaleY += zoom;
}
}
例2:スライダーコントロールを使用してGcSpreadGridコントロールを拡大する
◎サンプルコード(XAML)
<sg:GcSpreadGrid x:Name="GcSpreadGrid1">
<sg:GcSpreadGrid.LayoutTransform>
<ScaleTransform ScaleX="{Binding ElementName=slider, Path=Value}" ScaleY="{Binding ElementName=slider, Path=Value}"/>
</sg:GcSpreadGrid.LayoutTransform>
</sg:GcSpreadGrid>
<Slider x:Name="slider" Minimum="1" Maximum="5" Value="1" Width="200"/>
例3:スクロールバーを拡大したくない場合
以下のサンプルコードは、例2のスライダーコントロールを使用する場合を前提にしています。
◎サンプルコード(VB)
' スクロールバーの拡大率を逆算するコンバーターを実装します。 Public Class ScaleConverter Implements IValueConverter Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert Console.WriteLine(value) Dim i As Double? = CType(value, Double?) If (Not (i) Is Nothing) Then value = (1 / i) Console.WriteLine(value) End If Return value End Function Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack Return value End Function
◎サンプルコード(C#)
// スクロールバーの拡大率を逆算するコンバーターを実装します。
public class ScaleConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Console.WriteLine(value);
double? i = value as double?;
if (i != null)
{
value = 1 / i;
Console.WriteLine(value);
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}
◎サンプルコード(XAML)
<Window.Resources>
<local:ScaleConverter x:Key="scaleConverter"/>
</Window.Resources>
<Grid>
<sg:GcSpreadGrid x:Name="gcSpreadGrid1">
<sg:GcSpreadGrid.LayoutTransform>
<ScaleTransform ScaleX="{Binding ElementName=slider, Path=Value}" ScaleY="{Binding ElementName=slider, Path=Value}" x:Name="st"/>
</sg:GcSpreadGrid.LayoutTransform>
<sg:GcSpreadGrid.Resources>
<Style TargetType="ScrollBar">
<Setter Property="LayoutTransform">
<Setter.Value>
<ScaleTransform ScaleX="{Binding ElementName=slider, Path=Value, Converter={StaticResource scaleConverter}}" ScaleY="{Binding ElementName=slider, Path=Value,Converter={StaticResource scaleConverter}}">
</ScaleTransform>
</Setter.Value>
</Setter>
</Style>
</sg:GcSpreadGrid.Resources>
</sg:GcSpreadGrid>
<Slider x:Name="slider" Minimum="1" Maximum="5" Value="1" />
</Grid>
例4:フィルタウィンドウを拡大する
◎サンプルコード(XAML)
<sg:GcSpreadGrid x:Name="gcSpreadGrid1" PreviewMouseWheel="gcSpreadGrid1_PreviewMouseWheel">
<sg:GcSpreadGrid.LayoutTransform>
<ScaleTransform x:Name="st"/>
</sg:GcSpreadGrid.LayoutTransform>
<sg:GcSpreadGrid.Resources>
<Style TargetType="sg:FilterContextMenu">
<Setter Property="LayoutTransform">
<Setter.Value>
<ScaleTransform ScaleX="{Binding Source={x:Reference st}, Path=ScaleX}" ScaleY="{Binding Source={x:Reference st}, Path=ScaleY}"/>
</Setter.Value>
</Setter>
</Style>
</sg:GcSpreadGrid.Resources>
</sg:GcSpreadGrid>