1

wpf ツールキットの autoCompleBox (codeplex のもの) から選択した項目にアクセスしようとしていますが、null 参照エラーが発生し続けます。

私は本当にこれでレンガの壁にぶつかりました!

ここに私の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();
    }

私がアーカイブしようとしているのは、ユーザーがEnterキーを押したときにProductIDを取得したいということです。

私はこのようなことを試しました:

   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());

        }

    }

しかし、上記は null 参照エラーを返します。

ある種のバインディングが欠けているに違いありませんが、WPF は初めてなので、何を変更する必要があるのか​​ わかりません。

助けていただければ幸いです。

編集:

この質問を投稿した直後に解決策を見つけました。追加する必要があったのは次のとおりです。

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

同様の問題を抱えている他の誰かに役立つことを願っています。

乾杯、

4

1 に答える 1

2

この質問を投稿した直後に解決策を見つけました。追加する必要があったのは次のとおりです。

SelectedItem="{Binding ElementName=this,
           Path=ProductID,
           Mode=TwoWay,
           UpdateSourceTrigger=LostFocus}"
于 2013-04-17T02:24:57.397 に答える