このコントロールは廃止されたため、XamDataGrid コントロールに移行することをお勧めします。今後、新機能、バグ修正、サポートは提供されません。コードベースの XamDataGrid への移行に関する質問は、サポートまでお問い合わせください。
貼り付けイベントおよびイベント引数
xamGrid コントロールで貼り付けのサポートが有効で、エンドユーザーが貼り付け操作を開始すると、 ClipboardPasting イベントが起動されます。これはキャンセル可能なイベントではなく、一度だけ実行されます。
以下の例のコードは、ClipboardPasting イベントの使用を示します。この例では、選択されたデータは最初の xamGrid コントロールからコピーされ、2 番目の xamGrid コントロールに貼り付けられます。2 番目の xamGrid コントロールにデータが貼り付けられる前に簡単な計算が行われます。
1.まず、2 つの xamGrid コントロールを WPF ページ内の Grid コンテナーに追加します。2 番目の xamGrid コントロールには、最初の xamGrid コントロールからの UnitPrice および UnitsInStock 列の乗じた値の結果が含まれます。複数行のコピー操作は、ソース xamGrid コントロールで有効となり、貼り付け操作は 2 番目のコントロールで有効となります。
<Grid x:Name="LayoutRoot">
<Grid.Resources>
<data:DataUtil x:Key="DataUtil" />
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ig:XamGrid Width="450" Height="300" Grid.Column="0"
x:Name="sourceXamGrid" AutoGenerateColumns="False"
ItemsSource="{Binding Source={StaticResource DataUtil}, Path=Products}">
<ig:XamGrid.Columns>
<ig:TextColumn Key="ProductID" />
<ig:TextColumn Key="ProductName" />
<ig:TextColumn Key="UnitPrice" FormatString="{}{0:C}" />
<ig:TextColumn Key="UnitsInStock" />
</ig:XamGrid.Columns>
<ig:XamGrid.SelectionSettings>
<ig:SelectionSettings CellClickAction="SelectRow"
RowSelection="Multiple" />
</ig:XamGrid.SelectionSettings>
<ig:XamGrid.ClipboardSettings>
<ig:ClipboardSettings AllowCopy="True"
CopyOptions="ExcludeHeaders" />
</ig:XamGrid.ClipboardSettings>
</ig:XamGrid>
<ig:XamGrid Width="400" Height="300" Grid.Column="1"
x:Name="targetXamGrid" AutoGenerateColumns="False"
ClipboardPasting="targetXamGrid_ClipboardPasting" >
<ig:XamGrid.Columns>
<ig:TextColumn Key="ProductID" />
<ig:TextColumn Key="ProductName" />
<ig:TextColumn Key="TotalPrice" FormatString="{}{0:C}" />
</ig:XamGrid.Columns>
<ig:XamGrid.ClipboardSettings>
<ig:ClipboardSettings AllowPaste="True" />
</ig:XamGrid.ClipboardSettings>
</ig:XamGrid>
</Grid>
2.追加フィールドで、例で使用される Product クラスを拡張します。
Public Class ProductExtended Inherits Product
Private m_totalPrice As Decimal
Public Property TotalPrice() As Decimal
Get
Return m_totalPrice
End Get
Set(ByVal value As Decimal)
m_TotalPrice = Value
End Set
End Property
End Class
public class ProductExtended : Product
{
// このメンバーは、UnitPrice および UnitsInStock 値の乗じた値 を含みます
public Decimal TotalPrice { get; set; }
}
3.最後に、実装を ClipboardPasting イベント ハンドラーに追加します。
Private Sub targetXamGrid_ClipboardPasting(ByVal sender As Object, ByVal e As Infragistics.Controls.Grids.ClipboardPastingEventArgs)
Dim collection As New ObservableCollection(Of ProductExtended)()
For Each row In e.Values
Dim productData = New ProductExtended()
productData.ProductID = Convert.ToInt32(row(0))
productData.ProductName = row(1)
productData.TotalPrice =
(Convert.ToDecimal(row(2))) $$*$$ (Convert.ToDecimal(row(3)))
collection.Add(productData)
Next
targetXamGrid.ItemsSource = collection
End Sub
void targetXamGrid_ClipboardPasting(object sender,
Infragistics.Controls.Grids.ClipboardPastingEventArgs e)
{
ObservableCollection<ProductExtended> collection =
new ObservableCollection<ProductExtended>()
foreach (var row in e.Values)
{
ProductExtended productData = new ProductExtended();
productData.ProductID = Convert.ToInt32(row[0]);
productData.ProductName = row[1];
productData.TotalPrice = (Convert.ToDecimal(row[2])) $$*$$ (Convert.ToDecimal(row[3]));
collection.Add(productData);
}
targetXamGrid.ItemsSource = collection;
}