2

System.Windows.Controls.Inputのオートコンプリートボックスを希望どおりに機能させるのに問題があります。フィルタされたリストを表示するドロップダウンセクションを入力し始めると、バインドしているプロパティが表示されず、代わりにクラス名が表示されます。

したがって、以下の例では、「私の名前」を表示する代わりに「-」と入力すると、MyNamespace.Personが表示されます。ただし、オートコンプリートリストからアイテムを選択すると、テキストボックスにFullNameプロパティが表示されます。どこかに単純なオートコンプリートボックスプロパティがないのは確かですが、表示されません。

コード例:

public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName
        {
            get { return string.Format("{0} {1}", FirstName, LastName); }
        }
    }

背後にあるxamlコードで、いくつかのPersonオブジェクトを作成してリストに保存し、そのリストをオートコンプリートボックスにバインドします

List<Person> people = new List<Person>();
people.Add(new Person { FirstName = "My", LastName = "Name" });
people.Add(new Person { FirstName = "Fernando", LastName = "Torres" });
acbNames.ItemsSource = people;

私のxaml:

<my:AutoCompleteBox Name="acbNames" ValueMemberPath="FullName" />

/ *「my」を入力すると、オートコンプリートは「MyName」ではなく「MyNamespace.Person」を表示しますが、リストからアイテムを選択すると「MyName」を表示します* /

4

3 に答える 3

3

AutoCompleteBoxのドロップダウン部分にItemTemplateを使用する必要があることが判明したため、そのxamlは次のようになります。

<my:AutoCompleteBox Name="acbNames" ValueMemberBinding="{Binding FullName}">
            <my:AutoCompleteBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FullName}"/>
                </DataTemplate>
            </my:AutoCompleteBox.ItemTemplate>
        </my:AutoCompleteBox>
于 2010-04-19T06:50:23.550 に答える
2

はい、問題はアイテムテンプレートを配置しなかったためです。しかし、アイテムテンプレートを配置しても問題が発生する場合は、Sandroが書いたものを読んでください。

私も同じ問題を抱えていました。コントロールスタイルの静的リソースを使用して解決しました

これは私が使用したスタイルです:

<Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
    <Setter Property="Margin" Value="5,0,5,0"/>
    <Setter Property="MinWidth" Value="100"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property ="HorizontalAlignment" Value="Right"/>
</Style>

このスタイルを使用しない場合、DataItemで構成したときに税関アイテムが正しく表示されず、代わりにクラス名が表示されます。

共有|編集

これは私にも有効ですが、ツールキットからカスタムテーマスタイルを適用した場合に限ります。ツールキットのテーマを使用する場合、他にもいくつかの回避策があります

一番、

デバリシ

于 2012-12-11T21:55:47.153 に答える
1

私も同じ問題を抱えていました。コントロールスタイルの静的リソースを使用して解決しました

これは私が使用したスタイルです:

    <Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
        <Setter Property="Margin" Value="5,0,5,0"/>
        <Setter Property="MinWidth" Value="100"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property ="HorizontalAlignment" Value="Right"/>
    </Style>

このスタイルを使用しない場合、DataItemで構成したときに税関アイテムが正しく表示されず、代わりにクラス名が表示されます。

于 2011-02-04T06:10:08.623 に答える