我在发布此问题之前已经进行了大量搜索,但我没有找到任何合理的解决方案。
我尝试使用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
}
}
}
但是我在运行程序时没有显示任何数据。 有什么不对吗?
答案 0 :(得分:2)
设置ItemsControl的ItemsSource
属性,而不是DataContext
:
grid.ItemsSource = data.Catalogs;
或设置其DataContext
并绑定XAML中的ItemsSource
:
<ItemsControl x:Name="grid" ItemsSource="{Binding}">
...
</ItemsControl>
作为一个注释,调用ItemsSource&#34; grid&#34;会很奇怪。