c# - 填充数据模板内的组合框

标签 c# xaml winrt-xaml

如果组合框位于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/

相关文章:

c# - 如何在 WinRT 中将字符串绘制到位图图像

xaml - 为 Windows 应用商店应用学习 xaml 的最佳资源?

.net - Windows 8 行为库?

C# 使用哪种模式为长时间运行的任务提供同步和发布/订阅场景

c# - elasticsearch中长数据类型的通配符搜索问题

c# - 在 Silverlight 中使用字符串作为数据表单的数据模板时的事件处理程序

.net - 我可以使用 WPF 窗口中的 XamlReader.Load 或 InitializeFromXaml 来进行窗口定义吗?

c# - 使用 Image.Save 和 EncoderParameters 无损旋转 JPG 图像失败

c# - 最佳实践 : successfully merge two software?

c# - 如何获取用星号定义的 WPF 网格列来剪辑内容?