如果combobox
位于DataTemplate
的{{1}}内。如何在不进行硬编码的情况下填充ItemsControl
项目?从代码隐藏中访问combobox
的名称是不可能的,我甚至不喜欢这种方法。
combobox
是否有标准方法来填充来自外部数据存储区的<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox x:Name="aComboBox" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
'值?
答案 0 :(得分:2)
这是一个有点讨厌的解决方法,但您是否考虑在提供相关列表数据的每项数据源上添加属性?这不需要复制任何东西 - 它可以引用底层数据源,例如:
public class MyItemViewModel
{
public IList<string> ComboBoxItems { get { return MySource.ItemList; } }
...
}
然后,您可以从ItemsControl
项目模板绑定到此。
这只有在你的目的是只作为项目的数据源的类时才有效 - 如果你直接绑定到底层模型对象,这就不太实用了。但是,出于各种原因添加额外的层(例如,ViewModel层)通常是个好主意。
或者,您是否可以通过命名资源提供数据?您可以编写DataContext={StaticResource myData}
,这将使您远离引用项目的数据上下文的问题。