「AutoCompleteListBox」と呼ぶコントロールを作成したいと考えています。hotmail を使って to: アドレス行のように電子メールを送信したことがあるなら、私はそれを作成したいと考えています。入力ボックスのようなものがあり、入力すると、一致するオブジェクトのドロップダウンが表示されます。オブジェクト (連絡先) を選択すると、長方形のオブジェクトとして入力ボックスに追加されます。この方法で複数のオブジェクトを追加でき、入力ボックスはラップ パネルのように機能します。オブジェクトをバックスペースするか、各オブジェクトの x ボタンをクリックすると、オブジェクトを削除できます。
私のアプローチは、ItemsControl をサブクラス化することから始めることでした。基本的に、バインドされたアイテムとテキスト ボックスを表示するラップ パネルであるコントロール テンプレートの作成を開始しました。バインドされたアイテムとテキスト ボックスの両方を同じラップ パネルに配置する方法がわかりません。ここに私が持っているものがあります:
<Style TargetType="ctrl:AutoCompleteListBox">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="100"/>
<Setter Property="Background" Value="White"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ctrl:AutoCompleteListBox">
<ScrollViewer x:Name="RootScrollViewer" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Padding="0" Background="{TemplateBinding Background}">
<toolkit:WrapPanel IsItemsHost="True">
<!--Items Bound To ItemSource Go Here-->
<TextBox x:Name="txtInput"/>
</toolkit:WrapPanel>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
言いたいことをどう表現したらいいのかわからない。バインドされたアイテムを表示するコントロール テンプレートで「ItemsPresenter」を使用できることはわかっていますが、バインドされたアイテムと同じパネルにテキスト ボックスを追加するにはどうすればよいですか?
助けていただければ幸いです。これは正しい方法ですか?どうもありがとう。