填充DataTemplate中的组合框
本文关键字:组合 DataTemplate 填充 | 更新日期: 2023-09-27 17:57:29
如果combobox
在DataTemplate
内,则用于ItemsControl
的项。如何在不进行硬编码的情况下填充combobox
项目?从代码后面按名称访问combobox
是不可能的,我甚至不喜欢这种方法。
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox x:Name="aComboBox" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
是否有一种标准的方法来填充来自外部数据存储的combobox
值?
这是一个稍微令人讨厌的解决方法,但您是否考虑在提供相关列表数据的每项数据源上添加一个属性?这不需要复制任何内容——它可以指代底层数据源,例如:
public class MyItemViewModel
{
public IList<string> ComboBoxItems { get { return MySource.ItemList; } }
...
}
然后,您可以从ItemsControl
项模板绑定到它。
只有当你有一个类的目的是只充当项的数据源时,这才有效——如果你直接绑定到底层模型对象,这就不那么实用了。然而,由于各种原因,添加额外的层(例如,ViewModel层)通常是个好主意。
或者,您可以通过命名资源提供数据吗?您可以编写DataContext={StaticResource myData}
,这将使您摆脱数据上下文引用项的问题。