私はクエリを実行し、JSON応答を返すAPIコールがあります。 JSONレスポンスの構造のため、私はJson.Netを使用してリターンを逆シリアル化するクラスを作成しました。ここでは例のクラスがある:データネストされたクラスを持つオブジェクトにDataGridをバインド
public class QuerySet
{
public List<Column> Columns { get; set; }
public class Column
{
public List<string> Name { get; set; }
}
public List<RowSet> Rows { get; set; }
public class RowSet
{
public List<DataSet> Row { get; set; }
public class DataSet
{
public List<string> Data { get; set; }
}
}
}
今、単一のAPIコールは、いくつかのクエリセットを含むことができ、それぞれのリターンのために、私は、その後のデータにしたいことを、クエリセットのリストを生成するように、各セットにデータグリッドをバインド。あなたが見るかもしれないような問題は、ここで
public List<DataGrid> QueryResults;
public QueryResultsWindow(string _name, JObject _returns)
{
InitializeComponent();
QueryNameText.Text = _name;
QueryResults = new List<DataGrid>();
JArray sets = (JArray)_returns.SelectToken("$..Set");
foreach(JObject set in sets)
{
DataGrid dg = new DataGrid();
QuerySet s = new QuerySet();
s = JsonConvert.DeserializeObject<QuerySet>(set.ToString());
dg.ItemsSource = s.Rows;
QueryResults.Add(dg);
}
ResultsListBox.ItemsSource = QueryResults;
}
各特定のDataGridのために、私はNameプロパティにバインドされた列ヘッダーをしたいということです、そして:ここに私は私の窓の背後にあるコードでは、これまで持っているものの一例ですデータプロパティからデータが読み込まれます。ここで
は、私は現在のウィンドウでXAMLを設定している方法です。
<DockPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" VerticalAlignment="Top">
<TextBlock x:Name="QueryNameText" Margin="5"></TextBlock>
<Button Content="Export Results" Click="Button_Click" Margin="5"></Button>
</StackPanel>
<ListBox DockPanel.Dock="Top" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="3" Name="ResultsListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<DataGrid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" IsReadOnly="True" SelectionUnit="Cell">
<DataGrid.Columns>
<DataGridTextColumn Header="{Binding Name}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>
私はそれぞれの可能な戻り値の型のカスタムクラスを作成したい場合、これはずっと容易になるだろうことを知っています。しかし、何百もの潜在的な戻り値の型を考えると、これはあまり実行可能ではないようです。 DataTableを使用しようとしましたが、XAMLのListBoxでDataGridを設定しようとしましたが、これが正しく実装されていない可能性があります。最後に、DataGridのリストを作成してそれらにバインドしようとしました。
私はいくつかの助けを使うことができます。
ありがとうございます!