前方リンクリストがあるとしましょう:
public class A
{
public B Next { get; set; }
public String Value { get; set; }
public A(string value, B next)
{
this.Next = next;
this.Value = value;
}
}
public class B
{
public A Next { get; set; }
public int Value { get; set; }
public B(int value, A next)
{
this.Next = next;
this.Value = value;
}
}
public partial class MyWindow : Window
{
public A My_List{ get; set; }
public MyWindow()
{
Program program = new Program();
this.My_List = new A("value1", new B(1, new A("Value2", new B(2, new A("value3", new B(3, null))))));
this.DataContext = this;
InitializeComponent();
}
}
*My_List* を Wpf で表示するにはどうすればよいですか? 私は試した:
<StackPanel>
<StackPanel.Resources>
<DataTemplate DataType="{x:Type WpfApplication2:A}" x:Key="A_Template">
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Path=Value}" />
<Label Content="---" />
<Label Content="{Binding Path=Next.Value}" />
<ItemsControl ItemsSource="{Binding Path=Next.Next}" ItemTemplate="{DynamicResource A_Template}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
</DataTemplate>
</StackPanel.Resources>
<ItemsControl ItemsSource="{Binding Path=My_List}"
ItemTemplate="{StaticResource A_Template}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
*My_List* は最初の要素ではなく実際のリストでなければならないためだと思います。
編集:空のウィンドウ、出力なし、コンパイラエラーなし、ランタイム例外なし。