一个完整的demo
时间: 2023-07-31 12:04:39 浏览: 38
好的,这里给出一个完整的WPF demo,用于演示在ItemsControl中嵌套一个ItemsControl的绑定:
首先,定义一个ViewModel,用于提供数据:
```csharp
public class ViewModel
{
public ObservableCollection<OuterItem> OuterItems { get; set; }
public ViewModel()
{
OuterItems = new ObservableCollection<OuterItem>();
OuterItems.Add(new OuterItem() { OuterText = "Outer Item 1", InnerItems = new ObservableCollection<InnerItem>() { new InnerItem() { InnerText = "Inner Item 1.1" }, new InnerItem() { InnerText = "Inner Item 1.2" } } });
OuterItems.Add(new OuterItem() { OuterText = "Outer Item 2", InnerItems = new ObservableCollection<InnerItem>() { new InnerItem() { InnerText = "Inner Item 2.1" }, new InnerItem() { InnerText = "Inner Item 2.2" } } });
}
}
public class OuterItem
{
public string OuterText { get; set; }
public ObservableCollection<InnerItem> InnerItems { get; set; }
}
public class InnerItem
{
public string InnerText { get; set; }
}
```
然后,在MainWindow.xaml中,将ViewModel作为DataContext,定义一个外层ItemsControl:
```xml
<Window x:Class="WpfApp1.MainWindow"
...
xmlns:local="clr-namespace:WpfApp1"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<Grid>
<ItemsControl ItemsSource="{Binding OuterItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding OuterText}" />
<ItemsControl ItemsSource="{Binding InnerItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding InnerText}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Window>
```
这样,运行程序,就可以看到嵌套的ItemsControl已经成功绑定了数据。