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}"
我希望它可以幫助別人有類似的問題。
乾杯,
您應該添加您的解決方案作爲一個答案,並接受它,以便社區中的其他用戶知道它已經成功地解決了。 – 2013-03-28 00:16:09