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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
Oxlintはいいぞ
yug1224
5
1.3k
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
150
Patterns of Patterns
denyspoltorak
0
1.4k
AtCoder Conference 2025
shindannin
0
1k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
Fluid Templating in TYPO3 14
s2b
0
130
CSC307 Lecture 01
javiergs
PRO
0
690
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
700
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
930
高速開発のためのコード整理術
sutetotanuki
1
390
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
64
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Scaling GitHub
holman
464
140k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
The Pragmatic Product Professional
lauravandoore
37
7.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
120
Game over? The fight for quality and originality in the time of robots
wayneb77
1
110
AI: The stuff that nobody shows you
jnunemaker
PRO
2
250
The World Runs on Bad Software
bkeepers
PRO
72
12k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
160
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
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ͷࢦఆͰ͖Δ
͜ΜͳͷΛߟ͑ͯΈ· ͠ΐ͏