2012-06-06 136 views
0

我有一個列表框和一個文本框。我想處理它的關鍵事件,但它給我一個錯誤。listbox.itemsource = null;拋出異常wp7

<ListBox Name="lstSelectedNumber" Height="50" MaxHeight="120" VerticalAlignment="Top" Grid.Column="1" SelectionChanged="lstSelectedNumber_SelectionChanged"> 
          <ListBox.ItemContainerStyle> 
           <Style TargetType="ListBoxItem"> 
            <Setter Property="Padding" Value="-15" /> 
            <Setter Property="Margin" Value="0"/> 
           </Style> 
          </ListBox.ItemContainerStyle> 
          <ListBox.ItemsPanel> 
           <ItemsPanelTemplate> 
            <toolkit:WrapPanel> 
            </toolkit:WrapPanel> 
           </ItemsPanelTemplate> 
          </ListBox.ItemsPanel> 
          <ListBox.ItemTemplate> 
           <DataTemplate> 
            <StackPanel> 
            <TextBox x:Name="txtNumber" Text="{Binding Name,Mode=TwoWay}" IsEnabled="{Binding IsEnabled,Mode=TwoWay}" Background="Transparent" Foreground="{StaticResource ContactSelectorBrush}" Style="{StaticResource DialNumberStyle}" FontSize="24" KeyUp="txtNumber_KeyUp"> 
             <TextBox.CaretBrush> 
              <SolidColorBrush Color="{StaticResource CaretBrush}" /> 
             </TextBox.CaretBrush> 
            </TextBox> 
            </StackPanel> 
           </DataTemplate> 
          </ListBox.ItemTemplate> 
         </ListBox> 



private void txtNumber_KeyUp(object sender, KeyEventArgs e) 
     { 
      TextBox txtbox = sender as TextBox; 
      if (txtbox.Text.Contains(';')) 
      { 
       lstSelectedNumber.ItemsSource = null; 
       // My Application Got crashed at this point when i assign nullto item source 
       lstSelectedNumber.ItemsSource = lstContactModel; 
      } 

是否有任何替代,我更新的集合是該列表框的itemsource。請告訴我任何解決方法。

+0

你看到什麼異常? –

回答

0

我有固定的這個問題我自己。 問題是這樣的當我的文本框事件被稱爲它做我的列表中的一些變化,並綁定空來源到我的列表框和這種變化的影響我的用戶界面和用戶界面無法處理這種變化,所以我把我所有的代碼在調度,所以一旦所有事情已經完成它反映了用戶界面和用戶界面接受的變化

private void txtNumber_KeyUp(object sender, KeyEventArgs e) 
     { 
      TextBox txtbox = sender as TextBox; 
      if (txtbox.Text.Contains(';')) 
      { 
       Dispatcher.BeginInvoke(() => 
       { 
        lstSelectedNumber.ItemsSource = null; 
        lstSelectedNumber.ItemsSource = lstContactModel; 
       }); 
      } 
     } 
0

這是因爲它激發了lstSelectedNumber_SelectionChanged事件。 把一個調試器放在異常聲明並按下F11將帶你到這個事件。

更換

lstSelectedNumber.ItemsSource = null; 
lstSelectedNumber.ItemsSource = lstContactModel; 

lstSelectedNumber.SelectionChanged -= lstSelectedNumber_SelectionChanged; 
lstSelectedNumber.ItemsSource = null; 
lstSelectedNumber.ItemsSource = lstContactModel; 
lstSelectedNumber.SelectionChanged += lstSelectedNumber_SelectionChanged; 
+0

它不以這種方式工作以及我的代碼不會選擇更改事件。 –