重用ComboBox中的自定义对象列表

时间:2011-09-08 17:55:39

标签: wpf combobox

我有一个应用程序,用户可以在其中选择各种颜色来自定义其UI的视觉外观。

我想使用组合框控件来显示指定Windows颜色的列表供他们选择。对于每个组合框项目,我想要颜色的小预览,然后是颜色的文本名称。所以我的组合框项目包含一个堆栈面板,其中一个矩形用颜色填充,一个文本块包含文本部分。

当我们打开下拉部分时,我尝试构建这个140多种颜色的列表,但这会产生可感知的延迟,因为在创建具有不同填充颜色的140多个预览框时有一些处理。我可以在进入屏幕时加载所有4个组合框以消除打开下拉列表时的延迟,但这会在屏幕最初加载时产生更加可感知的延迟。

理想情况下,我想要做的是创建一个颜色项的静态列表,可以由用户选择颜色的所有组合框重用。

您无法将列表分配给多个控件。我怎么能绕过这个?

1 个答案:

答案 0 :(得分:2)

我不确定你的意思是“你不能将列表分配给多个控件”。假设您的数据上下文中有一个ColorList属性,它公开了静态列表,并为每个组合框选择了颜色属性,您可以按如下方式绑定组合框:

<ComboBox x:Name="One" ItemsSource="{Binding ColorList}" SelectedItem = "{Binding SelectedColorOne}"/>
<ComboBox x:Name="Two" ItemsSource="{Binding ColorList}" SelectedItem = "{Binding SelectedColorTwo}"/>
etc.