6

ASP.NETでは、次を使用してDropDownListからアイテムを取得できることを知っています。

DropDownList1.Items.FindByText

ComboBoxのWPFで使用できる同様の方法はありますか?

これがシナリオです。

制限タイプという列を含むRestrictionFormatというテーブルがあります。タイプは、これらの値を格納するテーブルへの外部キーです。

私が書いているエディターアプリケーションでは、ユーザーがComboBoxからRestrictionFormatを選択すると(これは正常に機能します)、編集のために詳細を取得しています。2番目のComboBoxを使用して、ユーザーが編集時に1つのRestrictionTypeのみを選択するようにしています。すでにRestrictionTypeテーブルの2番目のコンボボックスバインドプロパティがありますが、レコードで指定された値と一致するように、選択したインデックスを変更する必要があります。


これがシナリオです。

制限タイプという列を含むRestrictionFormatというテーブルがあります。タイプは、これらの値を格納するテーブルへの外部キーです。

私が書いているエディターアプリケーションでは、ユーザーがComboBoxからRestrictionFormatを選択すると(これは正常に機能します)、編集のために詳細を取得しています。2番目のComboBoxを使用して、ユーザーが編集時に1つのRestrictionTypeのみを選択するようにしています。すでにRestrictionTypeテーブルの2番目のコンボボックスバインドプロパティがありますが、レコードで指定された値と一致するように、選択したインデックスを変更する必要があります。

これは意味がありますか?

4

5 に答える 5

11

ItemContainerGenerator を使用できますか?

ItemContainerGenerator には、オブジェクト パラメーターを受け取る ContainerFromItem メソッドが含まれています。コンボボックスに含まれる完全なオブジェクトへの参照 (またはそれを再構築する方法) がある場合は、次を使用できます。

ComboBoxItem item = 
    (ComboBoxItem)myComboBox.ItemContainerGenerator.ContainerFromItem(myObject);
于 2009-03-19T16:28:33.633 に答える
3

WPFでは、FindNameメソッドを使用できます。

XAML:

    <ComboBox Name="combo">
        <ComboBoxItem Name="item1" >1</ComboBoxItem>
        <ComboBoxItem Name="item2">2</ComboBoxItem>
        <ComboBoxItem Name="item3">3</ComboBoxItem>
    </ComboBox>

コードビハインドファイル

   item1.Content = "New content"; // Reference combo box item by name
   ComboBoxItem item = (ComboBoxItem)this.combo.FindName("item1"); // Using FindName method

コンテンツでアイテムを検索するには、UIオートメーションを使用できます。

于 2008-09-03T08:11:31.870 に答える
1

SelectedIndex をバインドしようとする代わりに、ComboBox の SelectedItem をレコードの値にバインドしてみませんか?

つまり、ComboBox (またはその親) の DataContext を選択した「レコード」に設定し、ComboBox の SelectedItem を「レコード」の公開されたプロパティにバインドします。

いくつかのコード スニペットまたは追加の詳細を提供して、応答をより具体的にし、ソース レコードと入力した ComboBox の両方で使用している変数と型を参照できるようにすると役立つ場合があります。

于 2008-09-19T04:08:38.400 に答える
0

正確に何をしようとしているのかについて、いくつかのコンテキストを教えていただけますか?

どのオブジェクトをコンボボックスに入れ、どのメソッドを使用しますか? (ItemsSource プロパティを設定またはバインドしていますか?) なぜ「テキスト」で項目を検索する必要があるのですか? WPF での最も一般的な使用法は、SelectedItem プロパティを別のものにバインドして、表現を使用して選択したエントリを取得/設定できるようにすることです。リスト内の特定の項目を見つける必要がある特定の要件はありますか?

最悪の場合、Linq To Objects を使用して ComboBox をバインドするコレクションで検索を実行できます。

ComboBoxItem (つまり、ItemsSource をバインドするときに WPF によってバックグラウンドで生成される要素) を、バインド先のコレクション内の実際のオブジェクトである SelectedItem と間違えないでください。これは通常、慣れていない場合の WPF に関するほとんどの問題の原因です。実際の ComboBoxItem を見つける必要がある場合はほとんどありません。

于 2009-03-19T16:33:58.630 に答える
0

コンボボックスの項目は、次の 2 つの方法で取得できます。

アイテム別:

ComboBoxItem item = (ComboBoxItem) control.ItemContainerGenerator.ContainerFromItem(control.SelectedItem);

インデックス別:

ComboBoxItem item = (ComboBoxItem) control.ItemContainerGenerator.ContainerFromIndex(1);
于 2009-03-19T16:30:01.727 に答える