前提・実現したいこと
Jsonファイルに格納されている同じ階層にあるデータを、リンクさせて表示させたい(Bindingを使わずに)
お世話になっております。
Jsonファイルから読み込んだデータをListボックスを用いて表示しているのですが、
リストボックス内のデータ押下時に、そのデータと同じ階層にあるデータを表示させるための方法についてお伺いしたく存じます。
また今回デバッグなどの管理の点から、データ・バインディングの技術を用いずにコードを書きたいと思っております。(コードに記しましたバインディングの記述は今後置き換えていきます)
ご教授いただく中に「データ・バインディングを使わずに」という条件をつけており、大変恐縮ですが知見のある方教えていただけますと幸いです。
コードに基づく具体的な実現したいこと
jsonデータ内の"name"をリストボックスに表示しているため、
"name"内の[katsu]を押下した際に、"sex"を表示するTextBlockをデータバインディングを用いずに実装したい
該当のソースコード
xaml
<Window x:Class="Qmpalyja24rzx8z.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Qmpalyja24rzx8z" Width="800" Height="450"> <DockPanel> <Button Click="OpenButton_Click" Content="読み込み" DockPanel.Dock="Top" /> <UniformGrid Columns="4"> <GroupBox Header="マスター詳細"> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <GroupBox Header="MUData一覧"> <ListBox DisplayMemberPath="name" IsSynchronizedWithCurrentItem="true" ItemsSource="{Binding}" /> </GroupBox> <GroupBox Grid.Row="1" Header="Manager一覧"> <ListBox DisplayMemberPath="p_name" ItemsSource="{Binding /manager_list}" /> </GroupBox> </Grid> </GroupBox> </UniformGrid> </DockPanel> </Window>
C#
using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Data; using Newtonsoft.Json; namespace Qmpalyja24rzx8z { public class Manager { public string p_name { get; set; } } public class MUData { public string name { get; set; } public List<Manager> manager_list { get; set; } } public partial class MainWindow : Window { public MainWindow() => InitializeComponent(); private void OpenButton_Click(object sender, RoutedEventArgs e) { var json = @" [ { ""name"": ""katsu"", ""sex"": ""man"", ""manager_list"": [ { ""p_name"": ""katsudon"" }, { ""p_name"": ""tendon"" } ] }, { ""name"": ""katsu2"", ""sex"": ""woeman"", ""manager_list"": [ { ""p_name"": ""katsudon2"" }, { ""p_name"": ""tendon2"" } ] } ] ".Trim(); var data = JsonConvert.DeserializeObject<MUData[]>(json); // マスター詳細パターン DataContext = data; } } }
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.1.2
C#
WPF
Newtonsoft.json
まだ回答がついていません
会員登録して回答してみよう