syncfusion-wpf-card-view について
WPF でバインドしたデータをカード表示する Syncfusion CardView の利用スキルです。グループ化、並べ替え、フィルター、インライン編集、テンプレート、テーマ、ローカライズを扱い、データ操作には ItemsSource のバインドが必要です。
主な機能
- 01バインドした項目のカード表示
- 02項目のグループ化、並べ替え、フィルター
- 03カード内容のインライン編集
- 04ヘッダー、本文、編集テンプレートの調整
- 05テーマとローカライズの設定
活用シーン
- 01WPF のカードレイアウトでコレクションを表示
- 02フィールド別にカードをグループ化
- 03バインド項目の並べ替え、絞り込み、編集
- 04カードテンプレートと表示文字列の調整
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ syncfusion/ wpf-ui-components-skills --skill syncfusion-wpf-card-viewインストール後、Claude Code で/syncfusion-wpf-card-viewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/data-binding-and-templates.mdediting.mdgetting-started.mdgrouping.mdlocalization.mdsorting-and-filtering.md詳細
CardView(WPF)の実装
組み込みのグループ化、並べ替え、フィルタリング、インライン編集機能を備え、項目を視覚的なカードとして整理するパネルコントロールです。
このスキルを使用する場面
次のような場合に、このスキルを使用します。
- WPF アプリケーションでデータ項目のコレクションをカードとして表示する
- カード項目のグループ化、並べ替え、フィルタリングを有効にする
- カード項目にインライン編集を追加する(F2/ダブルクリック)
- テンプレートを使用してカードのヘッダー、本文、編集 UI をカスタマイズする
- カード項目を
ObservableCollectionにバインドする(MVVM) - テーマを適用する、または CardView の文字列をローカライズする
注: グループ化、並べ替え、フィルタリング、編集には、
ItemsSourceデータバインディングが必要です。これらの機能は、宣言的なCardViewItemの子要素では動作しません。
コンポーネントの概要
| クラス | 名前空間 | 用途 |
|---|---|---|
CardView | Syncfusion.Windows.Tools.Controls | カード項目用のコンテナパネル |
CardViewItem | Syncfusion.Windows.Tools.Controls | 個々のカード(宣言的な使用) |
必要なアセンブリ: Syncfusion.Shared.WPF + Syncfusion.Tools.WPF
XAML 名前空間:
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
ドキュメントとナビゲーションガイド
はじめに
📄 参照: references/getting-started.md
- アセンブリと名前空間の設定
- デザイナー、XAML、または C# で CardView を追加する
- 宣言的な
CardViewItemの使用方法 ItemsSourceデータバインディングの使用方法SelectedItem、IsSelected、SelectedItemChangedOrientation(Horizontal/Vertical)- SfSkinManager のテーマ設定
データバインディングとテンプレート
📄 参照: references/data-binding-and-templates.md
- Model + ViewModel +
ObservableCollectionの完全なパターン HeaderTemplate— カードヘッダーの表示ItemTemplate— 表示モードでのカード本文EditItemTemplate— 編集モードでのカード本文ItemContainerStyleとItemContainerStyleSelector- RTL レイアウト用の
FlowDirection - SfSkinManager のビジュアルスタイルのリファレンス
グループ化
📄 参照: references/grouping.md
CanGroupの有効化/無効化- フィールドをグループヘッダーにドラッグ&ドロップする
GroupCards(string)によるプログラムでのグループ化- 入れ子/複数レベルのグループ化
ShowHeaderでグループ化領域を非表示にする
並べ替えとフィルタリング
📄 参照: references/sorting-and-filtering.md
CanSortの有効化/無効化。フィールド名をクリックして並べ替え順序を切り替える- ドロップ領域を使用して、グループ化された項目を並べ替える
- ポップアップからフィールド値を選択してフィルタリングする(
ShowHeader="True"の場合に有効) - フィルターのクリアボタンの動作
ShowHeaderで並べ替え/フィルタリングのヘッダーを非表示にする
編集
📄 参照: references/editing.md
CanEditの有効化/無効化(既定値はfalse)- F2/ダブルクリックで編集モードに入り、Esc/Enter で終了する
EditItemTemplateの要件とパターンBeginEdit()/EndEdit()によるプログラムでの制御- 編集 UI のカスタムスタイル設定
ローカライズ
📄 参照: references/localization.md
CurrentUICultureの設定- リソースファイルの命名規則
- Name/Value ペアの設定
- フランス語カルチャーの例
クイックスタートの例
データバインディングとグループ化/並べ替えを備えた最小構成の CardView:
<Window xmlns:syncfusion="http://schemas.syncfusion.com/wpf">
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
<syncfusion:CardView ItemsSource="{Binding CardViewItems}"
CanGroup="True"
CanSort="True"
Name="cardView">
<syncfusion:CardView.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding FirstName}"/>
</DataTemplate>
</syncfusion:CardView.HeaderTemplate>
<syncfusion:CardView.ItemTemplate>
<DataTemplate>
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Name: " FontWeight="Bold"/>
<TextBlock Text="{Binding FirstName}"/>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Age: " FontWeight="Bold"/>
<TextBlock Text="{Binding Age}"/>
</StackPanel>
</ListBoxItem>
</ListBox>
</DataTemplate>
</syncfusion:CardView.ItemTemplate>
</syncfusion:CardView>
</Window>
// ViewModel.cs
public class ViewModel : NotificationObject
{
private ObservableCollection<Person> _items;
public ObservableCollection<Person> CardViewItems
{
get => _items;
set { _items = value; RaisePropertyChanged(nameof(CardViewItems)); }
}
public ViewModel()
{
CardViewItems = new ObservableCollection<Person>
{
new Person { FirstName = "Alice", LastName = "Smith", Age = 30 },
new Person { FirstName = "Bob", LastName = "Jones", Age = 25 },
new Person { FirstName = "Carol", LastName = "Smith", Age = 28 },
};
}
}
一般的なパターン
| シナリオ | プロパティ/メソッド |
|---|---|
| すべてのインタラクティブモードを有効にする | CanGroup="True" CanSort="True" CanEdit="True" |
| フィールドでプログラムからグループ化する | cardView.GroupCards("LastName") |
| プログラムで編集を制御する | cardView.BeginEdit() / cardView.EndEdit() |
| グループ化/並べ替え/フィルタリングのヘッダーを非表示にする | ShowHeader="False" |
| RTL レイアウト | FlowDirection="RightToLeft" |
| 選択に応じて処理する | SelectedItemChanged イベントを処理する |
| テーマを適用する | SfSkinManager.SetVisualStyle(cardView, VisualStyles.FluentLight) |
主なプロパティ
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
ItemsSource | IEnumerable | null | バインドするデータコレクション |
SelectedItem | object | null | 現在選択されているカード |
Orientation | Orientation | Horizontal | カードのレイアウト方向 |
CanGroup | bool | false | ドラッグ&ドロップによるグループ化を有効にします |
CanSort | bool | true | フィールドのクリックによる並べ替えを有効にします |
CanEdit | bool | false | インライン編集を有効にします |
ShowHeader | bool | true | グループ化/並べ替え/フィルターのヘッダーを表示または非表示にします |
HeaderTemplate | DataTemplate | — | カードヘッダーの表示テンプレート |
ItemTemplate | DataTemplate | — | 表示モードでのカード本文 |
EditItemTemplate | DataTemplate | — | 編集モードでのカード本文 |
ItemContainerStyle | Style | — | 各カードコンテナーに適用するスタイル |
コメント
Markdown 対応