XAML:
<Window x:Class="WpfCollectionX2.Window1"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Window.Resources>
<DataTemplate x:Key="Lines">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Description}" Width="120" ></TextBlock>
<TextBlock Text="{Binding Amount}" TextAlignment="Right" Width="120" ></TextBlock>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="Groups">
<GroupBox Header="{Binding GroupName}">
<ItemsControl ItemsSource="{Binding BudgetLines}" ItemTemplate="{StaticResource Lines}">
</ItemsControl>
</GroupBox>
</DataTemplate>
</Window.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding BudgetGroups}" ItemTemplate="{StaticResource Groups}">
</ItemsControl>
</Grid>
</Window>
CS:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Collections.ObjectModel;
namespace WpfCollectionX2
{
public partial class Window1 : Window
{
ObservableCollection<BudgetGroup> budgetGroups = new ObservableCollection<BudgetGroup>();
public ObservableCollection<BudgetGroup> BudgetGroups { get { return budgetGroups; } }
public Window1()
{
budgetGroups.Add(new BudgetGroup() { GroupName = "Test01" });
budgetGroups[0].addBudgetLine(new BudgetLine() { Description = "Line 01 01", Amount = 101m });
budgetGroups[0].addBudgetLine(new BudgetLine() { Description = "Line 01 02", Amount = 102m });
budgetGroups.Add(new BudgetGroup() { GroupName = "Test02" });
budgetGroups[1].addBudgetLine(new BudgetLine() { Description = "Line 02 01", Amount = 201m });
budgetGroups[1].addBudgetLine(new BudgetLine() { Description = "Line 02 02", Amount = 202m });
budgetGroups[1].addBudgetLine(new BudgetLine() { Description = "Line 02 03", Amount = 203m });
InitializeComponent();
}
}
public sealed class BudgetGroup
{
ObservableCollection<BudgetLine> budgetLines = new ObservableCollection<BudgetLine>();
public string GroupName { get; set; }
public ObservableCollection<BudgetLine> BudgetLines { get { return budgetLines; } }
public void addBudgetLine(BudgetLine line) {
this.budgetLines.Add(line);
}
}
public sealed class BudgetLine
{
public string Description { get; set; }
public decimal Amount { get; set; }
}
}
Da jeg er nybegynder indenfor WPF og C#, vil jeg meget gerne have kritik og gode råd :-)