我现在开始使用wpf(来自Windows Forms),现在我想创建一个用于玩wpf的小工具。 我知道有绑定和模板,并了解他们做了什么,并知道我必须填充Window.DataContext并且可以绑定到这个但是对于我的例子我不能把它全部放在一起,也许有人可以帮助我,更好地理解这一点。
模型
class ViewModel { public List'Bank ListOfBanks { get; set; } } class Bank { public List'Account ListOfAccounts { get; set; } } class Account { public String Description { get; set; } public Decimal Money { get; set; } }
我想要做的是,有一个(一些漂亮的蓝色)矩形的动态列表(Count = ListOfBanks属性中的Bank数),并且在这个Rectangle中应该是一个有两列(Description和Money属性)的网格应该具有与银行模型中的ListOfAccounts属性中的帐户一样多的行。
我所知道的是
public MainWindow() { InitializeComponent(); this.DataContext = new ViewModel(); }
我知道这并不多。我知道如何将网格列绑定到帐户属性,这就是全部。
如果有人可以帮助我,那就太棒了。
亲切的问候
答案 0 :(得分:2)
一种简单的方法是使用嵌套的ItemsCollection
:
<ItemsControl ItemsSource="{Binding ListOfBanks}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding ListOfAccounts.Count,StringFormat='Number of Accounts: {0}'}" />
<ItemsControl ItemsSource="{Binding ListOfAccounts}">
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Description}" />
<TextBlock Grid.Column="1" Text="{Binding Money,StringFormat='{}{0:C}'}" />
</Grid>
</DataTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ItemsControl是一个基本的重复控件 - 如果你想让花里胡哨使用ListBox
(项目选择)或DataGrid
(排序,分组,自动列等)。