Infragistics(R) NetAdvantage(R) Silverlight 2011.1
貼り付けイベントおよびイベント引数
関連トピック このトピックについてのご意見・ご感想をEメールにてお寄せください(日本語と英語に対応しています)。 また、弊社サービス・製品についてご質問・ご要望などがございましたら、こちらからお気軽にお問い合わせください。

Glossary Item Box

xamGrid コントロールで貼り付けのサポートが有効で、エンドユーザーが貼り付け操作を開始すると、ClipboardPasting イベントが起動されます。これはキャンセル可能なイベントではなく、一度だけ実行されます。

ClipboardPastingEventArgs には以下の 2 つのプロパティがあります。

以下の例のコードは、ClipboardPasting イベントの使用を示します。この例では、選択されたデータは最初の xamGrid コントロールからコピーされ、2 番目の xamGrid コントロールに貼り付けられます。2 番目の xamGrid コントロールにデータが貼り付けられる前に簡単な計算が行われます。

この例は、開発者に提供された DataUtil クラスを使用します。

1. 最初に 2 つの xamGrid コントロールを Silverlight ページ内の Grid コンテナーに追加します。2 番目の xamGrid コントロールには、最初の xamGrid コントロールからの UnitPrice および UnitsInStock 列の乗じた値の結果が含まれます。複数行のコピー操作は、ソース xamGrid コントロールで有効となり、貼り付け操作は 2 番目のコントロールで有効となります。

XAML の場合:

<UserControl.Resources>
        <data:DataUtil x:Key="DataUtil" />
</UserControl.Resources>

<Grid x:Name="LayoutRoot">
    <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 クラスを拡張します。

Visual Basic の場合:

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

C# の場合:

public class ProductExtended : Product
{
// このメンバーは、UnitPrice および UnitsInStock 値の乗じた値
を含みます public Decimal TotalPrice { get; set; } }

3. 最後に、実装を ClipboardPasting イベント ハンドラーに追加します。

Visual Basic の場合:

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

C# の場合:

void targetXamGrid_ClipboardPasting(object sender, 
Infragistics.Controls.Grids.ClipboardPastingEventArgs e)
{
    ObservableCollection> 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; }

4. Silverlight プロジェクトを実行します。

 

関連トピック