2017-01-06 7 views
-1

У меня проблема с кодовой строкой в ​​моей Wpf Apllication. label.Content = (string)nextfruit["q_text"]; Я получаю эту ошибку (тип «строка» не может быть неявно преобразован в «System.Windows.Controls.Label»). Я думаю, что это должно работать так, как я это сделал.Строка не может быть преобразована в System.Windows.Control.Label

Существует мой код

using System; 
using System.IO; 
using System.Net; 
using System.Windows; 
using System.Web.Script.Serialization; 
using System.Collections.Generic; 
using Newtonsoft.Json; 
using System.Json; 
using System.Linq; 
using Newtonsoft.Json.Linq; 

namespace MMPI2_Test 
    { 
    /// <summary> 
    /// Interaktionslogik für Patient.xaml 
    /// </summary> 
public partial class Patient : Window 
{ 
    public Patient() 
    { 
     InitializeComponent(); 
     Loaded += MyWindow_Loaded; 
    } 


    public String MyProperty { get; set; } 

    public String Property { get; set; } 

    private IEnumerator<JObject> Enumerator { get; set; } 
    public bool HasNext { get; private set; } 




    private void MyWindow_Loaded(object sender, RoutedEventArgs e) 
    { 
     dynamic convert = JsonConvert.DeserializeObject(MyProperty); 

     string user = MyProperty; 
     //lbuser.Content = json; 


     //string tan = ""; 
     MainWindow main = new MainWindow(); 
     // main.alpha = tan; 

     string html = string.Empty; 
     string url = @"http://stidl.workcloud.at/?tag=question&token=" + Property; 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.AutomaticDecompression = DecompressionMethods.GZip; 

     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
     using (Stream stream = response.GetResponseStream()) 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      html = reader.ReadToEnd(); 
     } 
     // dynamic magic = JsonConvert.DeserializeObject(html); 
     // string json2 = new JavaScriptSerializer().Serialize(html); 


     var j = new JavaScriptSerializer().DeserializeObject(user) as Dictionary<string, object>; 
     var d = j["data"] as Dictionary<string, object>; 
     lbuser.Content = d["fname"] + " " + d["lname"].ToString(); 

     //JObject QuestionObject = JObject.Parse(html); 
     //JToken question = QuestionObject["data"].First["q_text"]; 
     //lbquestion.Content = question; 

     JObject QuestionObject = JObject.Parse(html); 
     Enumerator = QuestionObject["data"].Children<JObject>().GetEnumerator(); 

     JObject IDObject = JObject.Parse(html); 
     JToken id = IDObject["data"].First["q_id"]; 
     JToken lastid = IDObject["data"].Last["q_id"]; 
     //JToken nextid = IDObject["data"].First.Next.Next["q_id"]; 
     lbid.Content = "Frage " + id + " von " + lastid; 


    } 

    class qq 
    { 

    } 

    private void bt_no_Click(object sender, RoutedEventArgs e) 
    { 

     string html = string.Empty; 
     string url = @"http://stidl.workcloud.at/?tag=question&token=" + Property; 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.AutomaticDecompression = DecompressionMethods.GZip; 

     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
     using (Stream stream = response.GetResponseStream()) 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      html = reader.ReadToEnd(); 
     } 
     //JObject IDObject = JObject.Parse(html); 
     //JToken nextid = IDObject["data"].First["q_id"]; 
     ////int result = (int)nextid; 
     //lbid.Content = nextid; 

     HasNext = Enumerator.MoveNext(); 
     if (HasNext) 
     { 
      JObject QuestionObject = JObject.Parse(html); 
      Enumerator = QuestionObject["data"].Children<JObject>().GetEnumerator(); 
      JObject nextfruit = Enumerator.Current; 
      lbquestion = (string)nextfruit["q_text"]; 
     } 
     else 
     { 

     } 


    } 

    private void bt_yes_Click(object sender, RoutedEventArgs e) 
    { 

    } 

    //public class QuestionData 
    //{ 
    // public string Data { get; set; } // this will store the JSON string 
    // public List<Data> DataList { get; set; } // this will be the actually list. 
    //} 

    //public class Data 
    //{ 
    // public string q_id { get; set; } 
    // public string q_text { get; set; } 


    //} 


} 
} 

Мой XML код

<Window x:Class="MMPI2_Test.Patient" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:MMPI2_Test" 
    mc:Ignorable="d" 
    Title="Patient" Height="560" Width="980"> 
<Window.Background> 
    <ImageBrush ImageSource="images/background.jpg" /> 
</Window.Background> 

<Grid> 
    <Label x:Name="lbquestion" Content="" HorizontalAlignment="Left" Margin="31,229,0,0" VerticalAlignment="Top" Width="906" Height="71"/> 
    <Button x:Name="bt_yes" Content="Ja" HorizontalAlignment="Left" Margin="534,349,0,0" VerticalAlignment="Top" Width="75" Click="bt_yes_Click" /> 
    <Button x:Name="bt_no" Content="Nein" HorizontalAlignment="Left" Margin="389,349,0,0" VerticalAlignment="Top" Width="75" Click="bt_no_Click"/> 
    <Label x:Name="lbuser" Content="" HorizontalAlignment="Left" Height="73" Margin="31,151,0,0" VerticalAlignment="Top" Width="906"/> 
    <Label x:Name="lbid" Content="" HorizontalAlignment="Left" Height="50" Margin="31,69,0,0" VerticalAlignment="Top" Width="783"/> 

</Grid> 

+0

use 'lbquestion.Content = (string) nextfruit [" q_text "];' для установки текста метки. Однако у вас также есть другие ошибки ('Enumerator.MoveNext' для одного) –

ответ

1
if (HasNext) 
    { 
     JObject QuestionObject = JObject.Parse(html); 
     Enumerator = QuestionObject["data"].Children<JObject>().GetEnumerator(); 
     JObject nextfruit = Enumerator.Current; 
     lbquestion = (string)nextfruit["q_text"]; //lbquestion is a label 
    } 

Он смотрит на меня, как это должно быть установление содержания. Это даже то, что вы сказали в своем вопросе.

+0

спасибо, это была глупая ошибка. – myplanet

+0

Без проблем, каждый пропустит что-то простое. – Scriven

-1

ОБНОВЛЕНИЕ: Я пропустил это lbQuestion - это ярлык.

(string)nextfruit["q_text"] является попытка литья струны. lbQuestion.Content - это то, что вам нужно получить, если вы собираетесь бросать строку; ошибка говорит вам, что вы пытаетесь приравнять метку к строке, а это не так.

+0

'lbquestion' является' Label'. OP включал XAML, где он определен. –

+0

К сожалению, вы правы, но это также объясняет это. Я исправлю свой ответ. – CDove

+1

Извините, что являюсь PITA, но вы также ошибаетесь в отношении приоритета оператора трансляции в C#: https://dotnetfiddle.net/Abu7qG –

Смежные вопросы