FlexGrid for WPF
削除ボタンを表示する
基本操作 > ボタン > 削除ボタンを表示する

C1FlexGrid で CellTemplate プロパティを使用して、テンプレートセルを作成して削除ボタンを表示することができます。

たとえば、次の例は、ボタンセルのテンプレート列を追加してボタンクリックで行の情報を削除する方法を示します。

 

【実行例】

 

マークアップ
コードのコピー
<c1:C1FlexGrid x:Name="_flex" Grid.Row="1" AutoGenerateColumns="False" Margin="5,5,5,5">
    <c1:C1FlexGrid.Columns>
        <c1:Column Header="Product" Binding="{Binding Line}"/>
        <c1:Column Header="Color" Binding="{Binding Color}"/>
        <c1:Column Header="Rating" Binding="{Binding Rating}"/>
        <c1:Column ColumnName="テンプレート">
            <c1:Column.CellTemplate>
                <DataTemplate>
                    <Button Content="削除" Click="Button_Click" />
                </DataTemplate>
            </c1:Column.CellTemplate>
        </c1:Column>
    </c1:C1FlexGrid.Columns>
</c1:C1FlexGrid>
コードのコピー
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    Dim product = GetProduct(sender)
    If product IsNot Nothing Then
        Dim result = MessageBox.Show("このレコードを削除しますか?", "確認", MessageBoxButton.OKCancel)
        If result = MessageBoxResult.OK Then
            Dim ev = TryCast(_flex.CollectionView, System.ComponentModel.IEditableCollectionView)
            ev.Remove(product)
        End If
    End If
End Sub
'グリッド上にコントロールとして表示されるProductを取得します
Private Function GetProduct(control As Object) As Product
    Dim e As FrameworkElement = TryCast(control, FrameworkElement)
    Return TryCast(e.DataContext, Product)
End Function
コードのコピー
private void Button_Click(object sender, RoutedEventArgs e)
{
    var product = GetProduct(sender);
    if (product != null)
    {
        var result = MessageBox.Show("このレコードを削除しますか?", "確認", MessageBoxButton.OKCancel);
        if (result == MessageBoxResult.OK)
        {
            var ev = _flex.CollectionView as System.ComponentModel.IEditableCollectionView;
            ev.Remove(product);
        }
    }
}
//グリッド上にコントロールとして表示されるProductを取得します
Product GetProduct(object control)
{
    FrameworkElement e = control as FrameworkElement;
    return e.DataContext as Product;
}