3

私の WPF アプリケーションには、2 つの AutoCompleteBox コントロールを持つ UserControl があります。この UserControl は、ページに複数回表示できます。問題は、AutoCompleteBox に入力すると、選択肢のドロップダウンが表示されないことです。Populating イベントを処理しています。そこにブレーク ポイントを置いてステップ スルーすると、ItemsSource に項目が含まれていることがはっきりとわかります。実際にはドロップダウンが表示されないことを除けば、動作しているように見えます。メニュー。http://msdn.microsoft.com/en-us/library/dd795156%28v=VS.95%29.aspxのコード サンプルに従いました。ここで何が欠けていますか?

XAML:

<my:AutoCompleteBox Name="acboxCoauthorName" Width="175" Unloaded="Control_Unloaded" MinimumPopulateDelay="100" Populating="acboxCoauthorName_Populating">
    <my:AutoCompleteBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=LastOrCompanyName}"/>
        </DataTemplate>
    </my:AutoCompleteBox.ItemTemplate>
</my:AutoCompleteBox>

C#:

private void acboxCoauthorName_Populating(object sender, PopulatingEventArgs e)
{
    e.Cancel = true;
    var query = from a in _context.Authors
                where a.Display_Name.StartsWith(acboxCoauthorName.Text)
                select a;
    acboxCoauthorName.ItemsSource = ((ObjectQuery) query).Execute(MergeOption.OverwriteChanges);
    acboxCoauthorName.PopulateComplete();
}

私たちがそれに取り組んでいる間、データコンテキストにあるオブジェクトをデータバインドすることもできないようです。上記のデータバインディング方法を試した、またはより単純な方法を試しました:

<my:AutoCompleteBox Name="acboxCoauthorName" Width="175" MinimumPopulateDelay="100" Populating="acboxCoauthorName_Populating" Text="{Binding Path=LastOrCompanyName}">

どちらも機能しませんでした。何か案は?

編集: 2 番目の部分は気にしないでください。コントロールの DataContext に間違ったオブジェクトを設定していました。

ありがとう。

4

2 に答える 2

3

ItemSource に何かが表示されている場合は、問題ないはずです...

MinimumPrefixLength を 0 に設定して、フィルタリングが行われなくてもポップアップが表示されるようにして、リストの内容を確認してください。また、使用しているフィルターがわかるようにフィルターを設定してください。

于 2011-08-03T17:28:50.107 に答える
3

私はWPFの初心者で、同じ問題を抱えていました。

このコントロールを追加するための Microsoft のテンプレートにも従いました。

約 1 時間後に検索したところ、Silverlight フォーラム ( http://forums.silverlight.net/t/178152.aspx/1 ) に次の提案がありました。

FilterMode="None" を XAML に追加してみてください

元の例が作成されてからデフォルト値が変更された可能性があります。または、WPF とこの特定のコントロールについて詳しく知っている人がさらに明確にすることができます (髪の毛を引っ張るのをやめてよかったです)。

于 2012-07-19T04:29:35.810 に答える