2016-01-15 38 views
0

我有复合设置,重新填充文本框和文本块的数据,但尝试重新填充列表框时失败。下面是一些代码:内部 “的OnNavigatedTo”如何重新填充UWP C#中的列表框后返回到框架?

{ 
ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)localSettings.Values["CompositeSettings"]; 

        if (composite == null) 
        { 
         MessageBox("No data!"); 
        } 
        else 
        { 
         txtBox1.Text = composite["text1"]?.ToString(); 
         txtBox2.Text = composite["text2"]?.ToString(); 

         //Here are the issues 
         lstOfData1.ItemsSource = composite["myListOfData1"]?.ToString(); 
         lstOfData2.ItemsSource = composite["myListOfData2"]?.ToString(); 

        } 

内部 “OnNavigatingFrom”

{ 

ApplicationDataCompositeValue composite = new ApplicationDataCompositeValue(); 
      composite["text1"] = txtBox1.Text; 
      composite["text2"] = txtBox2.Text; 

      composite["myListOfData1"] = myListOfData1; 
      composite["myListOfData2"] = myListOfData2; 

      localSettings.Values["CompositeSettings"] = composite; 

     } 

因此,txtBoxes重新填充罚款,但列表框为空。我是否通过复合设置进行初始化?怎么样?

回答

0

myListOfData1myListOfData2应该是某种藏品,但在OnNavigatingTo方法,你是他们铸造strings.This适用于文本框,因为Text属性是一个字符串。

您只需将其转换为正确的类型即可。 List < YourDataObject>,或类似的东西...

+0

谢谢菲利普,你走上了正轨。我解决了这个问题,如下所示: – Csharping

+0

// On NavigatedTo: { ... listBox.ItemsSource = composite [“myList”]; listBox2.ItemsSource = composite [“myList2”]; ... } – Csharping

+0

// OnNavigatingFrom: { ... 列表 COMP1 =新列表(); foreach(listBox.Items中的字符串项) { comp1.Add(item); } composite [“myList”] = comp1.ToArray(); 列表 comp2 =新列表(); foreach(listBox2.Items中的字符串项) { comp2.Add(item); } composite [“myList2”] = comp2.ToArray(); localSettings.Values [“CompositeSettings”] = composite; ... } – Csharping