填充DataTemplate内的Combobox

时间:2013-02-04 21:23:53

标签: c# xaml winrt-xaml

如果combobox位于DataTemplate的{​​{1}}内。如何在不进行硬编码的情况下填充ItemsControl项目?从代码隐藏中访问combobox的名称是不可能的,我甚至不喜欢这种方法。

combobox

是否有标准方法来填充来自外部数据存储区的<ItemsControl> <ItemsControl.ItemTemplate> <DataTemplate> <ComboBox x:Name="aComboBox" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> '值?

1 个答案:

答案 0 :(得分:2)

这是一个有点讨厌的解决方法,但您是否考虑在提供相关列表数据的每项数据源上添加属性?这不需要复制任何东西 - 它可以引用底层数据源,例如:

public class MyItemViewModel
{
    public IList<string> ComboBoxItems { get { return MySource.ItemList; } }
    ...
}

然后,您可以从ItemsControl项目模板绑定到此。

这只有在你的目的是只作为项目的数据源的类时才有效 - 如果你直接绑定到底层模型对象,这就不太实用了。但是,出于各种原因添加额外的层(例如,ViewModel层)通常是个好主意。

或者,您是否可以通过命名资源提供数据?您可以编写DataContext={StaticResource myData},这将使您远离引用项目的数据上下文的问题。