2013-03-22 39 views
1

我想從wpf工具包autoCompleBox(從codeplex的一個)訪問選定的項目,但我不斷收到空引用錯誤。C#Wpf工具包autocomplebox - 如何獲取選定的項目?

我真的用這個撞到了一堵磚牆!

這裏是我的XAML:

 <my:AutoCompleteBox 
    x:Name="autoTxtBoxProductCode" 
    VerticalAlignment="Top" Height="28" Margin="112,10,0,0" Width="144"   
    Background="#FFEDF4AB" 
    Populating="AutoBoxPopulateProductCode" 
    ValueMemberPath="ProductCode" 
    PreviewKeyUp="autoTxtBoxProductCode_PreviewKeyUp" 
    HorizontalAlignment="Left" 
    IsTextCompletionEnabled="False" 

     <my:AutoCompleteBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding ProductID}" FontWeight="Bold" Foreground="Black" Width="25"/> 
        <TextBlock Text="{Binding ProductBrandCode}" FontWeight="Bold" Foreground="Black" Width="55"/> 
        <TextBlock Text="{Binding ProductCode}" Foreground="Black"/> 
       </StackPanel> 
       </DataTemplate>   
      </my:AutoCompleteBox.ItemTemplate> 
     </my:AutoCompleteBox> 

這就是我如何更新項目來源:

private void AutoBoxPopulateProductCode(object sender, System.Windows.Controls.PopulatingEventArgs e) 
    { 
     // TextBox t = (TextBox)sender; 

     autoTxtBoxProductCode.ItemsSource = Product.GetListOfProductCodesAndBrands(autoTxtBoxProductCode.Text.ToString()); 
     autoTxtBoxProductCode.PopulateComplete(); 
    } 

我試圖存檔是當用戶按下回車鍵我想要得到的產品ID。

我已經試過這樣的事情:

private void autoTxtBoxProductCode_PreviewKeyUp(object sender, KeyEventArgs e) 
    { 

     if (e.Key != Key.Enter) 
     { return; } 
     else 
     { 
      Product prd = (Product)(autoTxtBoxProductCode.SelectedItem); 
      MessageBox.Show(prd.ProductID.ToString()); 

     } 

    } 

,但上述恢復空引用錯誤。

我必須缺少某種綁定,但由於WPF對我來說是新手,我無法弄清楚需要更改什麼。

幫助將不勝感激。

編輯:

剛剛張貼這個問題,我找到了解決辦法之後。所有我需要添加的是:

SelectedItem="{Binding ElementName=this, 
       Path=ProductID, 
       Mode=TwoWay, 
       UpdateSourceTrigger=LostFocus}" 

我希望它可以幫助別人有類似的問題。

乾杯,

+0

您應該添加您的解決方案作爲一個答案,並接受它,以便社區中的其他用戶知道它已經成功地解決了。 – 2013-03-28 00:16:09

回答

2

就在發佈這個問題後,我發現瞭解決方案。所有我需要添加爲:

SelectedItem="{Binding ElementName=this, 
      Path=ProductID, 
      Mode=TwoWay, 
      UpdateSourceTrigger=LostFocus}" 
相關問題