public class Parameter
{
public string Name { get; set; }
public Value Value { get; set; }
}
public abstract class Value
{
}
public class StringValue : Value
{
public string Str { get; set; }
}
public class ComplexValue : Value
{
public ComplexValue()
{
Parameters = new List<Parameter>();
}
public List<Parameter> Parameters { get; set; }
}
/// Contains ComplexValue
public class ComplexParameter : Parameter
{
}
<Window.Resources>
<DataTemplate DataType="{x:Type pc:Parameter}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="{Binding Name}"/>
<ContentPresenter Grid.Column="1" Content="{Binding Value}"/>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type pc:ComplexParameter}">
<StackPanel>
<Label Content="{Binding Name}"/>
<ContentControl Margin="18,0,0,0" Content="{Binding Value}"/>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type pc:ComplexValue}">
<ItemsControl ItemsSource="{Binding Parameters}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type pc:StringValue}">
<TextBox Text="{Binding Str}"/>
</DataTemplate>
</Window.Resources>
Param1 -Control----
Param2 -Control----
Complex1
Sub Param1 -Control-
Sub Param2 -Control-
或图像在这里:freeimagehosting.net/uploads/9d438f52e7.png
如何仅在左列(参数名称)中进行缩进。 像这样:
Param1 -Control----
Param2 -Control----
Complex1
Sub Param1 -Control----
Sub Param2 -Control----
或图像在这里:freeimagehosting.net/uploads/4ab3045b75.png
抱歉,我无法添加网址和图片:(
答案 0 :(得分:0)
据我所知,此任务没有简单的决定,因为视图模型应提供有关层次结构中节点级别的信息。如果提供级别来查看模型,我可以使用this decision。
同样有趣this example。