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>

它像我想要的那样工作,但它出现在一个加载很多的表单上,并且因为自动完成框有几千个项目,所以在初始加载时需要两到三秒才能将所有字符串编入索引/按顺序/无论如何一次我将它与适当的 observablecollection 绑定。

相反,我想将 autocompletebox 对象保留为全局对象,因此几秒钟的索引时间仅发生在第一次加载时,然后在随后打开窗口期间,表单上的 autocompletebox 可以设置为全局对象。我将如何在代码中复制这个数据绑定结构?

4

1 回答 1

1

首先创建一个 AutoComplete 并设置它的 DataTemplate(下面的链接会引导你)。

您无法在后台获取 DataTemplate 代码的实例,但是...

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

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

但是,如果我是您,尽管在代码隐藏中创建数据模板,但创建一个小资源并从后面的代码中获取它会使事情变得更容易。

于 2012-11-15T07:29:41.433 回答