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

Column クラスの CellTemplate プロパティは編集モードでないセルのテンプレートを定義します。C1FlexGridCellTemplate ロパティを使用してテンプレートセルを作成できます。

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

 

【実行例】

ボタンクリックで表示する詳細情報メッセージボックス

マークアップ
コードのコピー
<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="ShowDetail_Click" />
                </DataTemplate>
            </c1:Column.CellTemplate>
        </c1:Column>
    </c1:C1FlexGrid.Columns>
</c1:C1FlexGrid>
コードのコピー
Private Sub ShowDetail_Click(sender As Object, e As RoutedEventArgs)
    Dim product = GetProduct(sender)
    If product IsNot Nothing Then
        Dim detail = String.Format("Product: {0}, Color: {1}, Rating: {2}", product.Name, product.Color, product.Rating)
        MessageBox.Show(detail, "詳細情報", MessageBoxButton.OK)
    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 ShowDetail_Click(object sender, RoutedEventArgs e)
{
    var product = GetProduct(sender);
    if (product != null)
    {
        var detail = string.Format("Product: {0}, Color: {1}, Rating: {2}",
            product.Name, product.Color, product.Rating);
        MessageBox.Show(detail, "詳細情報", MessageBoxButton.OK);
    }
}

//グリッド上にコントロールとして表示されるProductを取得します
Product GetProduct(object control)
{
    FrameworkElement e = control as FrameworkElement;
    return e.DataContext as Product;
}