WPF初学者:绑定和模板

时间:2012-11-28 08:15:28

标签: c# wpf

我现在开始使用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();
    }

我知道这并不多。我知道如何将网格列绑定到帐户属性,这就是全部。

如果有人可以帮助我,那就太棒了。

亲切的问候

1 个答案:

答案 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(排序,分组,自动列等)。