SilverlightのAutoCompleteBoxテキスト
-
27-09-2019 - |
質問
system.windows.controls.inputで動作するように動作するように、オートコンプリートボックスを取得するのに問題があります。フィルタリングされたリストを表示するドロップダウンセクションの入力を開始すると、拘束力のあるプロパティが表示されない場合、代わりにクラス名が表示されます。
したがって、以下の例では、「私の名前」を表示する代わりに、Mynamespace.personを表示する代わりに入力するとき。ただし、AutoCompleteリストからアイテムを選択すると、テキストボックスに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コードでは、いくつかの人オブジェクトを作成し、それらをリストに保存し、そのリストをオートコンプリートボックスにバインドします
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'を入力した後、auto complete display 'mynamespace.person'の代わりに「私の名前」ではなく、リストからアイテムを選択した後に「私の名前」を表示します */
解決
AutoCompleteBoxのドロップダウン部分にitemTemplateを使用する必要があることがわかります。そのため、XAMLは次のとおりです。
<my:AutoCompleteBox Name="acbNames" ValueMemberBinding="{Binding FullName}">
<my:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FullName}"/>
</DataTemplate>
</my:AutoCompleteBox.ItemTemplate>
</my:AutoCompleteBox>
他のヒント
はい、あなたの問題は、あなたがアイテムテンプレートを入れなかったからです。ただし、アイテムテンプレートを入れて問題が発生した場合は、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で構成しているため、税関アイテムは正しく表示されません。代わりに、クラス名を表示します。
共有|編集
これも私にとっても機能しますが、Toolkitからカスタムテーマスタイルを適用した場合にのみ機能します。 Toolkitのテーマを使用するとき、他にもいくつかの回避策があります
一番、
デバリシ
同じ問題がありました。コントロールスタイルの静的リソースを使用して解決しました
これは私が使用したスタイルです:
<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で構成しているため、税関アイテムは正しく表示されません。代わりに、クラス名を表示します。