如果组合框
位于ItemsControl
项目的DataTemplate
内。如何在不进行硬编码的情况下填充 combobox
项?从代码隐藏中通过名称访问组合框是不可能的,我什至不喜欢这种方法。
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox x:Name="aComboBox" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
是否有标准方法来填充来自外部数据存储的组合框
'值?
最佳答案
这是一个有点令人讨厌的解决方法,但是您是否考虑过在提供相关列表数据的每项数据源上添加一个属性?这不需要复制任何内容 - 它可以引用底层数据源,例如:
public class MyItemViewModel
{
public IList<string> ComboBoxItems { get { return MySource.ItemList; } }
...
}
然后您可以从 ItemsControl
项模板绑定(bind)到此。
只有当您有一个类,其目的只是充当项目的数据源时,这才有效 - 如果您直接绑定(bind)到底层模型对象,则不太实用。但是,出于各种原因,添加额外层(例如 ViewModel 层)通常是个好主意。
或者,您可以通过指定资源提供数据吗?您可以编写 DataContext={StaticResource myData}
这将使您摆脱引用项目的数据上下文问题。
关于c# - 填充数据模板内的组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695913/