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
WPF勉強会 第3回 コレクションへのデータバインディング/WPFStudy3
Search
hachiilcane
March 01, 2022
Programming
0
100
WPF勉強会 第3回 コレクションへのデータバインディング/WPFStudy3
WPF勉強会 第3回 コレクションへのデータバインディング
説明後に実演するライブコーディングのコードはこちら。
https://github.com/hachiilcane/WpfStudy
hachiilcane
March 01, 2022
Tweet
Share
More Decks by hachiilcane
See All by hachiilcane
機械学習勉強会01 1次関数での回帰分析/MLStudy01
hachiilcane
0
60
機械学習勉強会02 多項式近似と最小二乗法による推定/MLStudy02
hachiilcane
0
77
機械学習勉強会03 最急降下法/MLStudy03
hachiilcane
0
37
機械学習勉強会04 偏微分と連鎖律/MLStudy04
hachiilcane
0
41
機械学習勉強会05 パーセプトロン/MLStudy05
hachiilcane
0
41
機械学習勉強会06 ロジスティック回帰/MLStudy06
hachiilcane
0
56
機械学習勉強会07 ROC曲線/MLStudy07
hachiilcane
0
39
機械学習勉強会08 2次元入力3クラス分類/MLStudy08
hachiilcane
0
66
機械学習勉強会09 2層フィードフォワードニューラルネット/MLStudy09
hachiilcane
0
69
Other Decks in Programming
See All in Programming
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
180
今から始めるClaude Code超入門
448jp
7
8.5k
CSC307 Lecture 08
javiergs
PRO
0
670
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6k
Basic Architectures
denyspoltorak
0
660
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
250
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
640
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
370
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
610
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
2
240
Thoughts on Productivity
jonyablonski
74
5k
A designer walks into a library…
pauljervisheath
210
24k
Automating Front-end Workflow
addyosmani
1371
200k
How to train your dragon (web standard)
notwaldorf
97
6.5k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
430
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Mobile First: as difficult as doing things right
swwweet
225
10k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
RailsConf 2023
tenderlove
30
1.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
WPFษڧձ ୈ̏ճ ίϨΫγϣϯͷ σʔλόΠϯσΟϯά
ࠓ֮͑ͯ΄͍͜͠ͱ ItemsSourceΛ࣋ͭίϯτϩʔϧ͕ίϨΫ γϣϯΛѻ͑Δ ObservableCollection<T>ɺͱʹ͔ͬ͘ ͱ͚ ίϨΫγϣϯͷཁૉͷݟͤํΛܾΊΔͷ ͕DataTemplete
σʔλόΠϯσΟϯά ͬ͘͟Γ̎ύλʔϯ Ұͭͷʹରͯ͠ ίϨΫγϣϯʹରͯ͠ ࠓճͬͪ͜
͍ͭίϨΫγϣϯͷόΠ ϯσΟϯάΛ͏ͷ͔ ෳϨίʔυͷσʔλΛදࣔ͢Δͱ͖ ΄΅ͯ͢ ࢝Ίσʔλ͕̌ݸͱ͔ɺޙ͔Βσʔ λ͕૿͑Δͱ͔ɺͥΜͥΜOKʂ
ίϨΫγϣϯͱݴ͑Ͳ ͋͘·ͰϓϩύςΟͱϓϩύςΟͰόΠ ϯσΟϯά͢ΔجຊมΘΒͳ͍ όΠϯσΟϯάιʔεଆͷϓϩύςΟͷ ܕ͕ίϨΫγϣϯܕ͚ͬͯͩ
༻Ͱ͖ΔUIίϯτϩʔ ϧݶΒΕ͍ͯΔ ItemsSourceϓϩύςΟɺίϨΫγϣϯ ΛόΠϯσΟϯάͰ͖Δͷʢ΄΅ʣ͜ ͍͚ͭͩ
ItemsSourceϓϩύςΟ Λ࣋ͭίϯτϩʔϧͷྫ ListBox ListView TreeView DataGrid ItemsControl Menu C1.WPF.C1Cha rt.ChartData
ͬͱ؆୯ͳྫ ListBoxʹObservableCollection<string>Λ όΠϯυͤ͞Δ ViewModelΫϥε ObservableCollection<string> AnimalList ViewΫϥε(XAML) ItemsSourceϓϩύςΟ όΠϯσΟϯάιʔε όΠϯσΟϯάλʔήοτ
←͜Μͳͷ͕Ͱ͖Δ DataContext ListBox
Listͷදࣔͷํܾ ·͍ͬͯͳ͍ ίϨΫγϣϯͷதҰͭҰͭͷදࣔͷ ํDataTemplateͰࢦఆ͢Δ
DataTemplateద༻ྫ <ListBox x:Name="SimplyListBox" ItemsSource="{Binding SimplyList}"> <ListBox.ItemTemplate> <DataTemplate> <Border CornerRadius="0" BorderBrush="Black"
BorderThickness="1"> <Grid Margin="3" Width="100"> <TextBlock Text="{Binding}"/> </Grid> </Border> </DataTemplate> </ListBox.ItemTemplate> </ListBox> public class AnimalsViewModel : ViewModelBase { public ObservableCollection<string> SimplyList { get; set; }
߹͍ݴ༿ ItemsSourceϓϩύςΟͱ DataTemplateɺηοτͰ͓τΫʂ
ίϨΫγϣϯͰ͋ͬͯ ௨ʂ ίϨΫγϣϯͷ߹ɺՃɺมߋɺআΛ۠ ผͯ͠ෳࡶͳ௨ΛߦΘͳ͚ΕͳΒͳ͍ ObservableCollection<T>ͦͷลΛࣗಈͰ ͬͯ͘ΕΔʂ ObservableCollection<T>ͷTมԽ͢ΔͳΒ TINotifyPropertyChanged͕ඞཁ
ίϨΫγϣϯͷόΠϯ σΟϯά·ͱΊΔͱ ViewModelΫϥε ObservableCollection<T>ͷϓϩύςΟ ViewΫϥε(XAML) ItemsSourceϓϩύςΟ όΠϯσΟϯάιʔε όΠϯσΟϯάλʔήοτ DataTemplate ListBoxͱ͔
DataContext
DataTemplateͷͳ͔Ͱ DataContext͕มΘΔ͜ͱʹҙ <ListBox ItemsSource="{Binding SimplyList}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock
Text=“{Binding Species}"/> <TextBlock Text=“{Binding Name}"/> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> public class AnimalsViewModel : ViewModelBase { public ObservableCollection<AnimalViewModel> SimplyList { get; set; } } public class AnimalViewModel : ViewModelBase { public string Species { get; set; } // ←INotifyPropertyChangedΛ࣮͍ͯ͠ͳ͍ͷͰ public string Name { get; set; }ɹ // ·͕ͪͬͨྫ͕ͩΠϝʔδͩͱࢥ͍ͬͯͩ͘͞ } public particle class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = new AnimalsViewModel(); } } ViewModelଆ Viewଆ ͜ΕDataContextͷઃఆͷํͱͯ͋͠·Γ ͍͍ྫͰͳ͍͕ɺͬͱ؆୯ͳΓํ
Ԡ༻ྫɿDataGrid ྻͷఆٛͷͳ͔ͰόΠϯυ͢Δ͜ͱ͕ଟ͍ <DataGrid ItemsSource="{Binding ServiceStatusList}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="αʔϏε" Width="160"
DisplayIndex="0" Binding="{Binding Name}"> </DataGridTextColumn> <DataGridTextColumn Header="Քಇঢ়ଶ" Width="80" DisplayIndex="1" Binding="{Binding Status}"> <DataGridTextColumn.ElementStyle> <Style TargetType="{x:Type TextBlock}" > <Setter Property="Margin" Value="2" /> <Setter Property="TextAlignment" Value="Center" /> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> </DataGrid.Columns> </DataGrid>
Ԡ༻ྫɿDataGridͱ DataTable ԿͷྻΛԿݸදࣔ͢Δͷ͔ܾ·ͬͯແ ͍ ͋Β͔͡ΊϓϩύςΟΛఆ͓ٛͯ͠ ͘͜ͱ͕Ͱ͖ͳ͍ ͦΜͳͱ͖DataTableΛDataContextʹ όΠϯυͤ͞Δ
DataGridͱDataTableͷ ૬ੑ DB͔ΒऔͬͨΛͦͷ··ͲʔΜʂ DataTable dt = null; string connectionString =
this.serverConnectionInfo.CreateBuilder().ConnectionString; using (SqlConnection con = new SqlConnection(connectionString)) { string query = “select * from aaaTable"; SqlCommand command = new SqlCommand(query, con); SqlDataAdapter a = new SqlDataAdapter(command); DataSet ds = new DataSet(); a.Fill(ds); dt = ds.Tables[0]; } this.LayoutRootGrid.DataContext = dt; <DataGrid ItemsSource="{Binding}"> </DataGrid>
ίπ DataTempleෳ༻ҙͰ͖Δ ίϨΫγϣϯͷܕʹΑ͍͚ͬͯΔ ˠDataTypeϓϩύςΟΛ͏ ಛఆͷϓϩύςΟͷʹΑ͍͚ͬͯΔ ˠDataTemplateSelectorΛ͏ DataTemplateͷதʹDataTriggerͷࢦఆͰ͖Δ
͜ΜͳͷΛߟ͑ͯΈ· ͠ΐ͏