[c#]与 WrapPanel wpf 绑定 ItemsControl

标签: Asp.net WPF C#
发布时间: 2017/2/25 3:39:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我找遍了很多之前发布这一问题,但我没有找到任何合理的解决方案。

我试图创建包含文本框使用 ItemsControl 网格。 这里是我的 xml:

<ScrollViewer>
        <ItemsControl x:Name="grid">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding CatalogName}"></TextBlock>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </ScrollViewer>

我分配到目录列表 grid 。这里是我的代码︰

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            GetCatalog();
        }

        async void GetCatalog()
        {
            using (var client = new ApiClientT1())
            {
                var data = await client.GetCatalogList();
                if (data.Success)
                {
                    grid.DataContext = data.Catalogs;
                }
                //TODO: Handling Errors/Exceptions
            }
        }
    }

但它在运行程序时不显示任何数据。 有什么错吗?

解决方法 1:

设置 ItemsControl 的 ItemsSource 属性,而不是其 DataContext :

grid.ItemsSource = data.Catalogs;

或设置其 DataContext 和绑定 ItemsSource 在 XAML 中︰

<ItemsControl x:Name="grid" ItemsSource="{Binding}">
    ...
</ItemsControl>

作为一个说明,它是怪叫若"网格"。

赞助商