2014-09-11 4 views
0

Когда приложение открывается, выбранный элемент ListPicker, а именно, «BackgroundColor» должен быть от переменной. Как достичь этого?selecteditem или selectedindex для listpicker

XAML:

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Name="PickerItemTemplate"> 
     <TextBlock Text="{Binding BackGroundColorString}" /> 
    </DataTemplate> 
    <DataTemplate x:Name="PickerFullModeItemTemplate" > 
     <Grid x:Name="rootGrid" Margin="0"> 
      <StackPanel Orientation="Horizontal" Margin="0 14 0 0" HorizontalAlignment="Center"> 
       <TextBlock Name="BackgroundColor" 
          Text="{Binding BackGroundColorString}" 
          FontSize="35" 
          Margin="10,10"        
          TextAlignment="Center" 
          FontFamily="/Assets/Fonts/AGENCYR.TTF#Agency FB" 
       /> 
      </StackPanel> 
     </Grid> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources>   

<toolkit:ListPicker x:Name="BackgroundColor" FullModeHeader="Select Background Color:" 
        Header="Background Color:" BorderThickness="0" 
        FullModeItemTemplate="{StaticResource PickerFullModeItemTemplate}" 
        ItemTemplate="{StaticResource PickerItemTemplate}" Background="#FF09043C" 
        SelectionChanged="BackgroundColor_SelectionChanged" > 
</toolkit:ListPicker> 

C#:

public class BackGroundlistPickerClass 
{ 
    public string BackGroundColorString 
    { 
     get; 
     set; 
    } 
} 

List<BackGroundlistPickerClass> BackGroundColorList = new List<BackGroundlistPickerClass>(); 

public void ImplementListPickeritems() //Listpickers 
{ 
    BackGroundColorList.Add(new BackGroundlistPickerClass() { BackGroundColorString = "White (Default)" }); 
    BackGroundColorList.Add(new BackGroundlistPickerClass() { BackGroundColorString = "Black" }); 
    BackGroundColorList.Add(new BackGroundlistPickerClass() { BackGroundColorString = "Light Grey" }); 

} 

string PreSelectedColor="Black"; 
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    BackgroundColor.SelectedItem=PreSelectedColor; // ERROR COMES ON THIS LINE 
} 

BackgroundColor.SelectedItem не работает, потому что пункты, в BackgroundColor являются acutaly из класса/Список. Теперь, как установить BackgroundColor listpicker на Black (PreSelectedColor) всякий раз, когда открывается страница?

ответ

2

Вам необходимо установить SelectedItem на изделие от ItemsSource. Вы можете попробовать таким образом, считая, что BackGroundColorList свойство, используемое для ItemsSource:

string PreSelectedColor="Black"; 
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    var defaultColor = 
      BackGroundColorList.FirstOrDefault(o => o.BackGroundColorString == PreSelectedColor); 
    BackgroundColor.SelectedItem = defaultColor; 
} 
Смежные вопросы