2011-11-17 101 views
2

我在嘗試將創建的對象綁定到listpicker時遇到問題。我已經成功地使用了帶有字符串和整數的listpicker,但是在嘗試使用我自己的類/對象時遇到了問題。Listpicker綁定問題WP7

這裏是XML(我有兩個listpickers,一個作品,一個沒有)

      <toolkit:ListPicker 
          x:Name="CountryListPicker" 
          Margin="0,2,0,10" Width="458" 
          BorderThickness="3" FullModeHeader="Country" 
          CacheMode="BitmapCache"> 
          <toolkit:ListPicker.ItemTemplate> 
           <DataTemplate> 
            <StackPanel Orientation="Horizontal"> 
             <Border Background="LightBlue" Width="34" Height="34"> 
              <TextBlock Text="{Binding _code}" FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
             </Border> 
             <TextBlock Text="{Binding _name}" Margin="12 0 0 0"/> 
            </StackPanel> 
           </DataTemplate> 
          </toolkit:ListPicker.ItemTemplate> 
          <toolkit:ListPicker.FullModeItemTemplate> 
           <DataTemplate> 
            <StackPanel Orientation="Horizontal" Margin="0 21 0 20"> 
             <TextBlock Text="{Binding _name}" Margin="16 0 0 0" FontSize="43" FontFamily="{StaticResource PhoneFontFamilyLight}"/> 
            </StackPanel> 
           </DataTemplate> 
          </toolkit:ListPicker.FullModeItemTemplate> 
         </toolkit:ListPicker> 

         <toolkit:ListPicker 
          x:Name="testPicker" 
          Header="Accent color" 
          FullModeHeader="ACCENTS" 
          CacheMode="BitmapCache"> 
          <toolkit:ListPicker.ItemTemplate> 
           <DataTemplate> 
            <StackPanel Orientation="Horizontal"> 
             <TextBlock Text="{Binding}" Margin="12 0 0 0"/> 
            </StackPanel> 
           </DataTemplate> 
          </toolkit:ListPicker.ItemTemplate> 
          <toolkit:ListPicker.FullModeItemTemplate> 
           <DataTemplate> 
            <StackPanel Orientation="Horizontal" Margin="0 21 0 20"> 
             <TextBlock Text="{Binding}" 
            Margin="16 0 0 0" 
            FontSize="43" 
            FontFamily="{StaticResource PhoneFontFamilyLight}"/> 
            </StackPanel> 
           </DataTemplate> 
          </toolkit:ListPicker.FullModeItemTemplate> 
         </toolkit:ListPicker>` 

第一個列表選擇器是我的新對象綁定一個,第二個是綁定的字符串。

這裏是後面的代碼:

 ObservableCollection<Country> countries = new ObservableCollection<Country>(); 
     countries.Add(new Country { _code = "US", _name = "United States1"}); 
     countries.Add(new Country { _code = "US", _name = "United States2" }); 
     countries.Add(new Country { _code = "US", _name = "United States3" }); 
     countries.Add(new Country { _code = "US", _name = "United States4" }); 
     countries.Add(new Country { _code = "US", _name = "United States5" }); 
     countries.Add(new Country { _code = "US", _name = "United States6" }); 
     this.CountryListPicker.ItemsSource = new ReadOnlyCollection<Country>(countries); 

     ObservableCollection<string> _accentColors = new ObservableCollection<string>(); 
     _accentColors.Add("Blue"); 
     _accentColors.Add("Blue2"); 
     _accentColors.Add("Blue3"); 
     _accentColors.Add("Blue4"); 
     _accentColors.Add("Blue5"); 
     _accentColors.Add("Blue6"); 
     _accentColors.Add("Blue7"); 
     this.testPicker.ItemsSource = new ReadOnlyCollection<string>(_accentColors); 

第二屆listpicker是很好,我想這是因爲它含有的字符串。

我破碎的listpicker顯示所有正確的數據,但是當我選擇一個listpickeritem時,它不會選擇它。該應用程序加載完整的listpicker,然後單擊其中一個項目,當我返回主視圖時,所選項目不會反映在listpicker中。

任何人有任何想法?需要我解釋了嗎?

+0

嗨,這裏有一個wp7工具包的新版本,它修復了很多'ListPicker'中的錯誤,你可能想去看看。 :) http://silverlight.codeplex.com/releases/view/75888 –

+0

謝謝,但我使用最新的。我認爲更新會解決它,但它只能解決滾動問題。我的對象是否必須實現某種接口來通知UI發生了選擇? – garry

+0

我還在CodePlex上發佈了這個問題,供那些想要關注此問題的人使用。如果他們爲我工作,我會在這裏發佈任何答案。 http://silverlight.codeplex.com/workitem/9839 – garry

回答

2

我自己想出了這一個。我有一個加載函數,其中listpicker正在初始化。看起來像Loaded在列表選擇器從全屏視圖返回並重新設置selectedIndex時得到「加載」。修復很簡單,只需移動列表的創建以及將Loaded函數中的itemSource設置爲構造函數即可。