Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fluent UI BlazorのDataGridの使い方
Search
tomokusaba
October 27, 2023
Programming
0
1.3k
Fluent UI BlazorのDataGridの使い方
.NETラボ勉強会2023年10月
Fluent UI BlazorのDataGridの使い方
https://dotnetlab.connpass.com/event/296773/
tomokusaba
October 27, 2023
Tweet
Share
More Decks by tomokusaba
See All by tomokusaba
.NET Conf 2024の振り返り
tomokusaba
0
7
.NET Conf 2024 .NETラボ 勉強会 2024年12月
tomokusaba
1
16
C#/.NETのこれまでのふりかえり
tomokusaba
1
190
Cloud Adoption Framework にみる組織とクラウド導入戦略
tomokusaba
2
740
Cloud Adoption Frameworkにみる組織とクラウド導入戦略(縮小版)
tomokusaba
1
270
私の考える初学者がBlazorできるまでの学習方法
tomokusaba
1
360
Semantic Kernelの最新状況及び入門
tomokusaba
0
240
Fluent UI Blazor 最新Update
tomokusaba
1
290
アクセシビリティの観点からみたFluent UI Blazorのすすめ
tomokusaba
1
350
Other Decks in Programming
See All in Programming
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
120
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
600
Contemporary Test Cases
maaretp
0
130
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
1.1k
Jakarta EE meets AI
ivargrimstad
0
130
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.3k
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
1
160
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
みんなでプロポーザルを書いてみた
yuriko1211
0
260
CSC509 Lecture 09
javiergs
PRO
0
140
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.1k
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
110
Featured
See All Featured
The Invisible Side of Design
smashingmag
298
50k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Being A Developer After 40
akosma
86
590k
For a Future-Friendly Web
brad_frost
175
9.4k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Navigating Team Friction
lara
183
14k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Bash Introduction
62gerente
608
210k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Designing for Performance
lara
604
68k
Transcript
Fluent UI Blazorの DataGridの使い方 株式会社SAKURUG プロダクトDiv 草場 友光 .NETラボ 2023年10月
自己紹介 • 普段は主にシステムをAzureにモダナ イズする仕事をしています。 • コミュニティ活動を通じて知識をアッ プデートしています。 • 2022/08-2024 Microsoft
MVP (Developer Technologies) • tomo_kusaba
宣伝 【VISION】ひとの可能性を開花させる企業であり続ける VISIONに共感できる仲間募集中。
注意 • 個人の見解・解釈が多分に入っています。 • 見解の相違・事実誤認などありましたらご指摘ください。 • FluentUIBlazor3.2.2の内容に基づいています。 • #dotnetlabでtweetすると左側に表示されます
今日の目的 • Fluent UI Blazor 3がリリースされました。 • 先月はコンポーネントの外観について見てみましたが今月は一番 よく使うと思われるDataGridに着目して見てましょう •
前提:Blazorの基本的な知識
本題の前にASP.NET Core in .NET8 RC2 • Blazor WebAssembly template update
• これまで.NETラボで何回か紹介してきたBlazor WASM Hostedのテンプレート廃止 • 認証のドキュメントも.NET8よりBlazor WASM Hostedにつ いての記述削除 • Blazor WASMはGithub PagesやAzure static Web Appsにホストするためのソリューション • Blazor WASM HostedはASP.NET Coreサーバが必要のた めBlazor Appsに移行が推奨
Fluent UIとは • Microsoftが提唱するUIデザインシステム • W3C準拠 • Fast上に構築されている • このFluent
UIの実装をするために用意されたMicrosoft 公 式のBlazorUIコンポーネントが Microsoft.Fast.Components.FluentUI • すべての主要なブラウザで動作する
なぜ、Fluent UI • Fluent UIには哲学がある! • コンポーネントを提供するのみならずその使用方法、配置方法、設 計原則が厳格に決められている。 • 他のデザインシステムでもコンポーネントの配置方法やデザインの
指針などは決められているが、その上位の指針までは余り見たこ とがない。
Fluent UIのすすめ • Fluent UIにはデザインシステムとしての設計ガイドラインがある • アクセシビリティの配慮、レウアウトの方法、色の使用法などUIコ ンポーネントを使用してそれらを配置する方法について語られて る •
これらを遵守することでシステム間をまたがった同等の操作性が 実現
Fluent UI設計原則 • 参考にしましょう →https://fluent2.microsoft.design/design- principles
Fluent UI Blazor 4について • 現在、Preview.1中 • 名前空間が Microsoft.FluentUI.AspNetCore.Componentsに変更 •
.NET 8以降のサポート • FASTプロジェクトから一旦独立
DataGrid • 内部的にはQuickGridのコードを流用して作成されている • 表形式のデータを表示するために使用される
DataGridの基本 • IQueryable<T>のデータ型を用意しよう • Itemsプロパティに指定 • カラムはPropertyColumnで
??セルにボタンを作りたい!! • PropertyColumnに代わりTemplateColumnを使う! • ポイント1 行を識別するキー情報をDataGridのItemsに入れ ておく。必ずしも表示する必要はない。 • ポイント2 OnClickイベントでキー情報をメソッドに渡してあげ
る • 2点でどの行をのボタンが押されたかを識別する
??条件によって色をつけたい • FluentDataGridのRowStyleプロパティまたはRowClass プロパティを使用する • TGridItemで指定した型(行の型)を引数としてstringを戻り値 として持つメソッドを定義してRowStyleまたはRowClassプロ パティに設定する • それぞれ、スタイルを変更する条件によって異なるスタイルシート
文字列またはクラス名を返すようにする
??条件によってセルの内容を変えたい • TemplateColumnを使用します。 • TemplateColumnの中は自由に条件式などを記述できるので if文などを記述し思いのままに。。。
??セルの内容が長文になるのを折り返 したい • Classにmultiline-textを設定する • (本当は用意した当初はTemplateColumnでdiv要素を使って スタイル設定するネタでしたが簡単にできる手段が用意されまし た👏)
??タイトルが長文になるのを折り返した い • TemplateColumn内のHeaderCellItemTempleteを使用 する • いままで、Titleプロパティで設定されていたものが HeaderCellItemTempleteがある場合テンプレートに代わり HeaderCellItemTemplete内に記述されたものがそのまま タイトルに出る
• div要素でスタイル設定すればよい→単なるスタイルシートの知識 があればあとはいける!!
まとめ • HTMLやスタイルシート書きたくないよって思ってUIコンポーネ ント使っているはずが細かいことやり出すとどうしてもHTMLや スタイルシートが顔を出す!! • やっぱり、知識としてはHTMLやスタイルシートを憶えておいて損 はないけどもUIコンポーネントでこれをいかに局所化できるかが 勝負
参考文献 • Welcome to the Fluent UI Blazor components library
• Microsoft Fluent UI Blazor components
おしまい おしまい