填充DataTemplate中的组合框

本文关键字:组合 DataTemplate 填充 | 更新日期: 2023-09-27 17:57:29

如果comboboxDataTemplate内,则用于ItemsControl的项。如何在不进行硬编码的情况下填充combobox项目?从代码后面按名称访问combobox是不可能的,我甚至不喜欢这种方法。

<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ComboBox x:Name="aComboBox" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

是否有一种标准的方法来填充来自外部数据存储的combobox值?

填充DataTemplate中的组合框

这是一个稍微令人讨厌的解决方法,但您是否考虑在提供相关列表数据的每项数据源上添加一个属性?这不需要复制任何内容——它可以指代底层数据源,例如:

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

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

只有当你有一个类的目的是只充当项的数据源时,这才有效——如果你直接绑定到底层模型对象,这就不那么实用了。然而,由于各种原因,添加额外的层(例如,ViewModel层)通常是个好主意。

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