2014-10-16 46 views
1

我从我正在开发的应用程序创建了一个测试应用程序。我有一个listpicker与一组颜色出于某种原因,当它进入全模式选择没有被更新。listpicker fullmode没有更新选项

我已经下载了2个这样的例子,我没有看到我错过了什么。感谢

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Name="lstColorsItemTemplate"> 
     <StackPanel Orientation="Horizontal"> 
      <Rectangle Fill="{Binding pickedColorBlock}" Height="30" Width="30"/> 
      <TextBlock Text="{Binding pickedColor}" Foreground="{StaticResource PhoneAccentBrush}" Margin="10,0,0,0" /> 
     </StackPanel> 
    </DataTemplate> 
    <DataTemplate x:Name="fulllstColorsItemTemplate" > 
     <StackPanel Orientation="Horizontal" > 
      <Rectangle Fill="{Binding pickedColorBlock}" Height="30" Width="30" Margin="0,0,10,10" /> 
      <TextBlock Text="{Binding pickedColor}" Foreground="{StaticResource PhoneAccentBrush}" Margin="10,0,0,0" FontSize="20" /> 
     </StackPanel> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 


    <StackPanel Orientation="Horizontal" Margin="13,113,143,0"> 
     <toolkit:ListPicker x:Name="lstColors" Width="225"        
          ItemTemplate="{StaticResource lstColorsItemTemplate}" 
          FullModeItemTemplate="{StaticResource fulllstColorsItemTemplate}" 
          Header="Font Color" 
          BorderBrush="{StaticResource PhoneAccentBrush}" 
          Background="#FFF4F4F5" 
          CacheMode="BitmapCache"/> 
    </StackPanel> 

后面的代码

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) //without ToDoTableEntries not set as observablcollection throws null error (never counts up) 
    { 

     List<colorChoices> source = new List<colorChoices>(); 
     source.Add(new colorChoices() { pickedColorBlock = Colors.Black.ToString(), pickedColor = "Black", pickedSolidColorBrush = new SolidColorBrush(Colors.Black) }); 
     source.Add(new colorChoices() { pickedColorBlock = Colors.White.ToString(), pickedColor = "White", pickedSolidColorBrush = new SolidColorBrush(Colors.White) }); 
     source.Add(new colorChoices() { pickedColorBlock = Colors.Red.ToString(), pickedColor = "Red", pickedSolidColorBrush = new SolidColorBrush(Colors.Red) }); 
     source.Add(new colorChoices() { pickedColorBlock = Colors.Brown.ToString(), pickedColor = "Brown", pickedSolidColorBrush = new SolidColorBrush(Colors.Brown) }); 
     source.Add(new colorChoices() { pickedColorBlock = Colors.Blue.ToString(), pickedColor = "Blue", pickedSolidColorBrush = new SolidColorBrush(Colors.Blue) }); 
     source.Add(new colorChoices() { pickedColorBlock = Colors.Gray.ToString(), pickedColor = "Gray", pickedSolidColorBrush = new SolidColorBrush(Colors.Gray) }); 

     lstColors.ItemsSource = source; 

    } 

    class colorChoices 
    { 

     public string pickedColorBlock { get; set; } 
     public string pickedColor {get; set;} 
     public SolidColorBrush pickedSolidColorBrush {get; set;} 

    } 
+0

你是什么意思,它没有得到更新?你的意思是你不知道FullScreenMode中的哪个项目是SelectedItem? – 2014-10-17 00:19:40

+0

对不起,当我点击我的列表时,它将带我到全模式屏幕我选择我的新颜色,它将我返回到我的原始页面,但SelectedItem不会更改它保持第一个选项。 – branedge 2014-10-17 01:58:41

回答

1

它,因为它重新加载的ItemSource在protected override void OnNavigatedTo

设置的ItemSource在构造函数,它会解决你的问题。


要明白我的意思把一个破发点,在lstColors.ItemsSource = source这将打破第一次应用程序被加载,它会破坏一旦它从全页模式回来,基本上重置列表。

+0

谢谢。那在我的测试应用程序(我发布的那个)上工作的奇怪的事情是它不会在我的“真实”的应用程序工作。我从我的测试应用程序复制了代码,并粘贴到我的真实应用程序,它不会工作。我卸载并重新安装了Windows Phone工具包,并注意到一旦我选择了颜色后,它会跳转到全屏页面,我选择颜色它会返回到页面,但选择不会更改,但如果再次单击颜色在它进入全屏之前,它会将颜色选择更改为我之前选择的颜色。 – branedge 2014-10-17 15:26:13

+0

现在试图复制和粘贴真实应用程序中的代码来测试应用程序,并查看它是什么打破它。但注意到测试应用程序是Windows Phone的Silverlight 8.1和真正的应用程序是Windows Phone 8.可以这样做吗?我没有升级我的真实应用程序到8.1,但没有解决它... – branedge 2014-10-17 17:21:11

+0

@ user2712080我在WP8.0 SL上测试它,它适用于我。在我看来,您的“真实”应用程序与您的“测试”应用程序(其工作原理)不同。我的猜测是你的“真实”应用与ListPicker混淆。 – 2014-10-18 00:05:02