我正在编写一个Silverlight应用程序。我想要一个垂直显示行的列表框。然后对于每一行,该行上应该有一个标题列,然后是一个水平的面板列表。我找到了布局。我的问题在于数据绑定。
ListBox绑定到一个集合。该集合中的每个项目都是列表框中的一行。集合中的每个项目都有一个集合,它将绑定到每个ListBox行中的ItemsControl ItemsSource。
例如
[报头] [X] [Y] [Z] [报头] [X2] [Y2] [Z2] [报头] [X3的] [Y3] [Z3]
我需要使用的绑定语法是什么?
<ListBox Name="listRuleSteps" Height="150" Loaded="ListBox_Loaded" ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical" Height="50">
<dataInput:Label Content="{Binding StepID}"></dataInput:Label>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Vertical">
<ItemsControl ItemsSource="{Binding SelectedItem.RuleEngineParts, ElementName=listRuleSteps}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<controlToolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<controlToolkit:WrapPanel Width="100">
<dataInput:Label Content="Text1"></dataInput:Label>
</controlToolkit:WrapPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我认为问题出在这条线上。我显然不想使用SelectedItem,但我不确定绑定ItemsSource是什么。
<ItemsControl ItemsSource="{Binding SelectedItem.RuleEngineParts, ElementName=listRuleSteps}" >
如果您认为我这样做完全错了,请告诉我。我是Silverlight的新手。
答案 0 :(得分:1)
首先,我认为这里不需要datainput:Label
控件,在TextBlock
属性上绑定的简单Text
在没有额外行李的情况下也可以正常工作。< / p>
在内部ItemsControl
中,您可以像这样绑定: -
<ItemsControl ItemsSource="{Binding RuleEngineParts}"
现在,您可以将内部TextBlock
s Text
属性绑定到RuleEngineParts
集合中找到的对象的相应属性。