0

これらのデータバインディングを備えたオートコンプリートボックスがあります。

<sdk:AutoCompleteBox Height="23" HorizontalAlignment="Left" Margin="80,21,0,0" Name="comboBox_clients" VerticalAlignment="Top" Width="171" ItemsSource="{Binding}" IsTextCompletionEnabled="True" IsDropDownOpen="True" ValueMemberPath="client_code">
    <sdk:AutoCompleteBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding client_code}" Name="left" Width="70" />
                <TextBlock Text="{Binding client_name}" Name="right" Width="250" />
            </StackPanel>
        </DataTemplate>
    </sdk:AutoCompleteBox.ItemTemplate>
</sdk:AutoCompleteBox>

希望どおりに機能しますが、大量に読み込まれるフォームに表示されます。また、autocompleteboxには数千のアイテムがあるため、最初の読み込み時にすべての文字列のインデックスを作成するのに2、3秒かかります。適切なobservablecollectionでバインドします。

代わりに、autocompleteboxオブジェクトをグローバルとして保持したいので、数秒のインデックス作成時間は最初のロードでのみ発生し、その後ウィンドウを開いている間、フォームのautocompleteboxをグローバルに設定できます。このデータバインディング構造をコードで複製するにはどうすればよいですか?

4

1 に答える 1

1

まず、オートコンプリートを作成し、そのDataTemplateを設定します(以下のリンクから先に進みます)。

DataTemplateコードのインスタンスを背後で取得することはできませんが...

https://stackoverflow.com/a/7101581/413032

https://stackoverflow.com/a/72158/413032

しかし、コードビハインドでデータテンプレートを作成し、小さなリソースを作成し、コードビハインドからそれに到達するにもかかわらず、私があなただった場合は、作業が簡単になります。

于 2012-11-15T07:29:41.433 に答える