1

내 wp7 앱에 listpicker 컨트롤이 있습니다. 그리고 나는 나의 필요에 따라 선택된 색인을 설정하고 싶다. 내 listpicker에 100 개의 항목이 있다고 가정 해 봅시다. 선택한 인덱스가 40 미만이면 잘됩니다. 하지만 50을 넘는 Selected Index를 설정하면 화면이 공백으로 표시되고 UI가 새로 고쳐지지 않지만 백엔드에서는 올바른 항목을 표시합니다.Listpicker는 선택한 색인 설정을 설정 한 후에 공백이됩니다.

샘플 프로젝트 :이 프로젝트에서 http://yaariyan.net/Test_Project.rar

당신은뿐만 아니라 테스트

  1. 모든 소스

  2. XAP 파일을 얻을 수는

  3. 단계를 재현하려면

  4. 오류 스냅 샷

그냥 마지막 2 개의 버튼으로 재생하면 쉽게 문제를 재현 할 수 있습니다.

Windows phone 7.1.1 SDK 및 Silverlight Took Kit 2011 년 11 월 버전을 사용하고 있습니다.

DLL 내가 내 프로젝트 나는이 같은 문제를 경험 한

+2

문제가 여전히 가능한 가장 작은 크기로 줄이십시오. 아니요, 당신의 출처의 크기를 모르지만 그것으로 연결하면 좋지 않을 것이라는 믿음을 갖게됩니다. 좋은 징후는 문제가되지 않습니다. 또한, 범죄는 없지만, 나는이 날과 나이에 임의의 링크를 클릭하는 것을 매우 좋아하지 않습니다 ... –

+0

@lc. 그것의 다만 1 개 페이지 및 1.5 MB보다는 더 많은 것 그것은 문제의 더 나은 정류를 위해 사용하고있는 실버 라이트 툴킷 dll을 conatins. 그리고 샘플 코드를 업로드 한 후 많은 버전과 실버 라이트 테이크 세트 세트를 변경했습니다. 나는 11 월 verion 공식 1을 사용하고있다 –

답변

0

에서 말하는거야 그건 내 폴더에 있습니다. 나는 아직 해결책을 찾지 못해 두려워하지만 문제를 조금 좁혔다. 문제가 SelectedIndex 40과 50 (내 경우에는 48) 사이에서 발생하는 것으로 확인됩니다.

간단히 말해서 새로운 WP 솔루션을 만들고 두 개의 ListPicker 컨트롤을 MainPage.xaml보기에 추가하고 버튼을 추가하는 것이 었습니다. 코드를 통해 두 목록에 50 개의 문자열을 추가하고 SelectedIndex을 첫 번째 목록에서는 0으로 설정하고 두 번째 목록에서는 50으로 설정합니다. 내가 프로젝트를 실행하고 (영화가 모든 것을 말해, 내가 생각하는)이 함께 결국

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     int tempindex = listPicker1.SelectedIndex; 
     listPicker1.SelectedIndex = listPicker2.SelectedIndex; 
     listPicker2.SelectedIndex = tempindex; 
    } 

:

http://screencast.com/t/T6mZ7FEdUF

버튼은 다음과 같이 selectedIndex의 속성의 간단한 스위치 않습니다

+0

나는이 것을 분류했다. 실버 라이트 툴킷의 listpicker 컨트롤 버그입니다. 나는 툴킷의 출처가 바뀌었고 그것을 고쳤다. 내가 지금 모바일로 soom을 공유 할 것입니다 :) –

+0

당신이 소스를 공유 할 수 있다면 나는 사랑한다! – heidgert

+0

xaml에 itemSource 바인딩을 설정했는데 xaml.cs가 아니라 다른 응답을 확인했습니다. 나는 그것이 당신을 위해 일하기를 바란다. –

0

나는 당신의 문제를 해결했다. 내가 한 것은 ListPicker Itemsource를 .xaml에 바인딩 한 것이지 코드 뒤에있는 것이 아니므로 완벽하게 작동했습니다.

공공 부분 클래스 MainPage

 <toolkit:ListPicker ItemsSource="{Binding LstCountry}" SelectedIndex="55" x:Name="listPickerCountrySignup" Height="72" HorizontalAlignment="Left" Margin="14,43,0,0" VerticalAlignment="Top" Width="436" FullModeHeader="Select Country" Background="White" BorderBrush="White" CacheMode="BitmapCache" > 

.xaml.cs 코드 :

당신이 제공하는 파일의 편집 .xaml 코드하여 PhoneApplicationPage, { // 생성자 공공에서 INotifyPropertyChanged MainPage() { InitializeComponent(); BindList(); this.DataContext = this; }

public class country 
    { 
     public int CountryID { get; set; } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    void NotifyPropertyChanged(String propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (null != handler) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    List<country> _lstCountry; 
    public List<country> LstCountry 
    { 
     get{return _lstCountry;} 
     set{ 
      if(_lstCountry!=value) 
      { 
       _lstCountry = value; 
       NotifyPropertyChanged("LstCountry"); 
      } 
     } 
    } 
    void BindList() 
    { 
     LstCountry = new List<country>(); 

     for (int i = 0; i <= 100; i++) 
     { 
      LstCountry.Add(new country { CountryID = i }); 
     } 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     listPickerCountrySignup.SelectedIndex = 15; 
    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     listPickerCountrySignup.SelectedIndex = 25; 
    } 

    private void button3_Click(object sender, RoutedEventArgs e) 
    { 
     listPickerCountrySignup.SelectedIndex = 39; 
    } 

    private void button4_Click(object sender, RoutedEventArgs e) 
    { 
     listPickerCountrySignup.SelectedIndex = 55; 
    } 

    private void button5_Click(object sender, RoutedEventArgs e) 
    { 
     listPickerCountrySignup.SelectedIndex = 75; 
    } 
}