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

 Column クラスの CellEditingTemplate プロパティは編集モードでセルを作成します。また、CellEditingTemplate プロパティは XAML で定義でき、列内のセルを表すビジュアル要素の作成に使用されます。

たとえば、次の例は、ボタンセルのテンプレート列を追加してボタンクリックでセルを編集モードにする方法を示します。

 

【実行例】

 

マークアップ
コードのコピー
<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)
    Dim list = TryCast(_flex.CollectionView.SourceCollection, IList(Of Product))
    Dim index = list.IndexOf(product)
    If index >= 0 Then
        _flex.StartEditing(False, index, 2)
    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);
    var list = _flex.CollectionView.SourceCollection as IList<Product>;
    var index = list.IndexOf(product);
    if (index >= 0)
    {
        _flex.StartEditing(false, index, 2);
    }
}
//グリッド上にコントロールとして表示されるProductを取得します
Product GetProduct(object control)
{
    FrameworkElement e = control as FrameworkElement;
    return e.DataContext as Product;
}