>source

아래 이미지와 같은 json이 있습니다.

json을 listview에 넣고 싶습니다(listview 내부에는 텍스트를 표시하는 webview가 있습니다(파란색 원으로 표시). 색인(검정색으로 원 표시)에 따라 순서대로 표시됨).

XAML:

<ListView
                                    Name="ListPairOption"
                                    Height="auto"
                                    Margin="5,0,10,0">                                    <ListView.ItemTemplate>                                        <DataTemplate x:DataType="data:PairClass">                                            <Grid>                                                <Grid.ColumnDefinitions>                                                    <ColumnDefinition Width="*"/>                                                    <ColumnDefinition Width="auto"/>                                                </Grid.ColumnDefinitions>                                                <StackPanel
                                                    x:Name="pilganStack"
                                                    Grid.Column="0"
                                                    Margin="10,10,10,10">                                                    <WebView
                                                        x:Name="option"
                                                        MaxWidth="600"
                                                        MaxHeight="300"
                                                        Margin="5,5,5,5"
                                                        local:MyProperties.HtmlString="{Binding Name}"/>                                                </StackPanel></ListView

code:

string urlPath= "..../multiple/test/284/4";
var httpClient= new HttpClient(new HttpClientHandler());
httpClient.DefaultRequestHeaders.Add("Authorization", string.Format("Bearer {0}", "token"));
var response= await httpClient.GetAsync(urlPath);
string jsonText= await response.Content.ReadAsStringAsync();
try
{
    JsonObject jsonObject= JsonObject.Parse(jsonText);
    JsonObject questionObject= jsonObject["EXAM_QUESTION"].GetObject();
    int index= 0;
        string c= "";
        string v1= "";
        string choice= "";
        ObservableCollection<PairClass> itemL= new ObservableCollection<PairClass>();
    JsonArray mapArray= questionObject["map"].GetArray();
    foreach (JsonValue mapValue in mapArray)
        {
            JsonArray mapArrayI= mapValue.GetArray();
                foreach (JsonValue mapValueI in mapArrayI)
                {
            PairClass pair= new PairClass();
                        try
                        {
                            if (mapValueI.ToString().All(char.IsDigit))
                            {
                                    c= String.Concat(mapValueI.ToString().Where(Char.IsDigit));
                                        index= Int16.Parse(c);
                                        pair.Ind= index;
                                }
                else
                                {
                                    string v= mapValueI.ToString();
                                        var collection= Regex.Matches(v, "\\\"(.*?)\\\"");
                                        foreach (var item in collection)
                                        {
                                            v1= item.ToString().Trim('"');
                                                choice= v1;
                                                pair.Name= choice;
                                         }
                                }
                for (int i= 0; i < varian; i++)
                                {
                                    itemL.Add(new PairClass { Ind= index, Name=  choice });
                                 }
                                 itemL.Add(pair);
            }
        }
    }
    ListPairOption.ItemsSource= itemL;
}

페어 클래스:

public class PairClass
    {
        public int Ind { get; set; }
        public string Name { get; set; }
        public PairClass()
        {
            Ind= int.MinValue;
            Name= string.Empty;
            Pilihan= string.Empty;
        }
        public PairClass(int ind, string name)
        {
            Ind= ind;
            Name= name;
        }
    }

아래와 같이 ListView에 데이터를 표시할 수 없는 문제가 있습니다(마지막 데이터만 목록 보기에 반복적으로 표시됨).

어떻게 처리합니까?

  • 답변 # 1

    code를 확인했는데 생성한 것 같습니다.페어 클래스잘못된 위치에 있는 경우에는 지도 항목을 구문 분석하기 전에 생성해야 하며 각 지도 항목을 구문 분석한 후 값을 할당해야 합니다. 아래 code를 업데이트 하였으니 확인 부탁드립니다.

    try
    {
        JsonObject jsonObject= JsonObject.Parse(jsonText);
        JsonObject questionObject= jsonObject["EXAM_QUESTION"].GetObject();
        int index= 0;
        string c= "";
        string v1= "";
        string choice= "";
        ObservableCollection<PairClass> itemL= new ObservableCollection<PairClass>();
        JsonArray mapArray= questionObject["map"].GetArray();
        foreach (JsonValue mapValue in mapArray)
        {
            JsonArray mapArrayI= mapValue.GetArray();
            PairClass pair= new PairClass();
            foreach (JsonValue mapValueI in mapArrayI)
            {
                try
                {
                    if (mapValueI.ToString().All(char.IsDigit))
                    {
                        c= String.Concat(mapValueI.ToString().Where(Char.IsDigit));
                        index= Int16.Parse(c);
                        pair.Ind= index;
                    }
                    else
                    {
                        string v= mapValueI.ToString();
                        var collection= Regex.Matches(v, "\\\"(.*?)\\\"");
                        foreach (var item in collection)
                        {
                            v1= item.ToString().Trim('"');
                            choice= v1;
                            pair.Name= choice;
                        }
                    }
                }
                catch
                {
                }
            }
            itemL.Add(pair);
        }
        ListPairOption.ItemsSource= itemL;
    }
    catch
    {
    }
    

    "pair.Name"을 목록 보기에 성공적으로 표시하려면 pair.Ind에 따라 "pair.Name"(위의 파란색 원으로 표시된 이미지와 같이) 순서를 표시하고 싶습니다. 나는 검은색으로 동그라미를 쳤다) )

    Rose2021-11-25 02:43:50

    물론 itemL의 ` pair.Ind` 속성을 기반으로 주문할 수 있습니다.

    Nico Zhu - MSFT2021-11-25 02:46:04

    물론 itemL의 ` pair.Ind` 속성을 기반으로 주문할 수 있습니다. var 목록= item.OrderBy(php.Ind).ToList(); ListPairOption.ItemsSource= 목록;

    Nico Zhu - MSFT2021-11-25 02:54:05
  • 이전 혼동 행렬을 작성하기 위해 샘플 GLMNET LogReg 결과를 확인하는 방법은 무엇입니까?
  • 다음 excel : 필터 범위 복사 값 붙여넣기 및 새 시트 만들기