ListBox中的动态属性值绑定

时间:2015-01-20 14:15:56

标签: c# .net wpf xaml

我有一个列表框“lbModernLineView”,它在其中绑定到“Lines”可观察集合,每个列表框项目都与“Line”对象绑定。我在这个列表框中有另一个名为“InnerListBox”的列表框。

一旦用户右键单击“InnerListBox”,我将向用户显示弹出窗口。在此弹出窗口中,我将显示“Line”类中的所有属性(例如:Value1,Value2等等)。

如果用户从弹出窗口中选择“属性”名称,我需要在InnerListBox中显示该属性“value”。 (例如:如果用户选择“value1”,那么“Line”对象中的对应值需要显示在InnerListBox中。)

用户可以从Poppup中选择最多5个属性名称,该“Line”对象的5个属性值和5个属性名称应该显示在“InnerListBox”中。

如何在列表框项中绑定这些动态属性值?

public class Line
{
 public int Value1{ get; set; }
 public int Value2{ get; set; }
 public int Value3{ get; set; }
 public int Value4{ get; set; }
 public int Value5{ get; set; }
 public int Value6{ get; set; }
 public int Value7{ get; set; }
 public int Value8{ get; set; }
}

以下是我的listBox示例

的一部分
 <ListBox x:Name="lbModernLineView"
                 Grid.Row="1"
                 Margin="2,2,2,2"
                 FontFamily="Courier New"
                 FontSize="13"   ItemsSource="{Binding Lines,IsAsync=True,
                                       Mode=TwoWay}" >
  <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="Black" BorderThickness="2,1,2,1">
                        <Border.ToolTip>
                            <TextBlock Text="{Binding desription}" />
                        </Border.ToolTip>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="60" />
                                <ColumnDefinition Width="110" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="89" />
                            </Grid.RowDefinitions>
 <Border Grid.Column="1"
                                    BorderBrush="Black"
                                    BorderThickness="0,0,2,0" >
                                <ListBox ItemsSource="{Binding ModernColumn,Mode=TwoWay}" Name="InnerListBox" >
                                    <ListBox.ItemTemplate>
                                        <DataTemplate>
                                            <Grid Background="Transparent" >
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="30"> </ColumnDefinition>
                                                    <ColumnDefinition></ColumnDefinition>
                                                </Grid.ColumnDefinitions>
                                                <TextBlock Grid.Column="0" Text="{Binding Prop}" />
                                                <TextBlock Grid.Column="1" Text="{Binding Value}"  HorizontalAlignment="Right" Background="Transparent"/>

                                            </Grid>
                                        </DataTemplate>
                                    </ListBox.ItemTemplate>

                                </ListBox>
<
</ListBox>

0 个答案:

没有答案