前提・実現したいこと
Jsonファイルに格納されている同じ階層にあるデータを、リンクさせて表示させたい(Bindingを使わずに)
お世話になっております。
Jsonファイルから読み込んだデータをListボックスを用いて表示しているのですが、
リストボックス内のデータ押下時に、そのデータと同じ階層にあるデータを表示させるための方法についてお伺いしたく存じます。
また今回デバッグなどの管理の点から、データ・バインディングの技術を用いずにコードを書きたいと思っております。(コードに記しましたバインディングの記述は今後置き換えていきます)
ご教授いただく中に「データ・バインディングを使わずに」という条件をつけており、大変恐縮ですが知見のある方教えていただけますと幸いです。
コードに基づく具体的な実現したいこと
jsonデータ内の"name"をリストボックスに表示しているため、
"name"内の[katsu]を押下した際に、"sex"を表示するTextBlockをデータバインディングを用いずに実装したい
該当のソースコード
xaml
1<Window 2 x:Class="Qmpalyja24rzx8z.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="clr-namespace:Qmpalyja24rzx8z" 6 Width="800" 7 Height="450"> 8 <DockPanel> 9 <Button 10 Click="OpenButton_Click" 11 Content="読み込み" 12 DockPanel.Dock="Top" /> 13 <UniformGrid Columns="4"> 14 15 <GroupBox Header="マスター詳細"> 16 <Grid> 17 <Grid.RowDefinitions> 18 <RowDefinition /> 19 <RowDefinition /> 20 </Grid.RowDefinitions> 21 <GroupBox Header="MUData一覧"> 22 <ListBox 23 DisplayMemberPath="name" 24 IsSynchronizedWithCurrentItem="true" 25 ItemsSource="{Binding}" /> 26 </GroupBox> 27 <GroupBox Grid.Row="1" Header="Manager一覧"> 28 <ListBox DisplayMemberPath="p_name" ItemsSource="{Binding /manager_list}" /> 29 </GroupBox> 30 </Grid> 31 </GroupBox> 32 </UniformGrid> 33 </DockPanel> 34</Window>
C#
1using System.Collections.Generic; 2using System.Linq; 3using System.Windows; 4using System.Windows.Data; 5using Newtonsoft.Json; 6 7namespace Qmpalyja24rzx8z 8{ 9 public class Manager 10 { 11 public string p_name { get; set; } 12 } 13 14 public class MUData 15 { 16 public string name { get; set; } 17 public List<Manager> manager_list { get; set; } 18 } 19 20 public partial class MainWindow : Window 21 { 22 public MainWindow() => InitializeComponent(); 23 24 private void OpenButton_Click(object sender, RoutedEventArgs e) 25 { 26 var json = @" 27[ 28 { 29 ""name"": ""katsu"", 30 ""sex"": ""man"", 31 ""manager_list"": [ 32 { 33 ""p_name"": ""katsudon"" 34 }, 35 { 36 ""p_name"": ""tendon"" 37 } 38 ] 39 }, 40 { 41 ""name"": ""katsu2"", 42 ""sex"": ""woeman"", 43 ""manager_list"": [ 44 { 45 ""p_name"": ""katsudon2"" 46 }, 47 { 48 ""p_name"": ""tendon2"" 49 } 50 ] 51 } 52] 53".Trim(); 54 var data = JsonConvert.DeserializeObject<MUData[]>(json); 55 56 // マスター詳細パターン 57 DataContext = data; 58 } 59 } 60}
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.1.2
C#
WPF
Newtonsoft.json
回答1件
あなたの回答
tips
プレビュー