1

我有对象数据绑定到 WPF 中的 ListBox。最终结果应该是这样的:

-------------------------------------------
| 姓名 | 选项1 | 价值1 |
| | 选项 2 | 价值2 |
| | 选项 3 | 价值3 |
| | 选项 4 | 价值4 |
-------------------------------------------

本质上,我有一个用于整体变量的 DataTemplate,然后 Opt/Value 组合有它自己的 DataTemplate。我试图尽可能简单地显示值列表。

<Label Content="{Binding Path=Identifier.Name, Mode=OneWay}" />
<ListView Grid.Column="1" HorizontalAlignment="Stretch" 
          ItemsSource="{Binding Path=Values, Mode=OneWay}" />

Values 的绑定目前只有一个<Grid>带有 2<Label>的和 ListView 有很多我不看的功能,比如边框样式、选择等等,而我真正想要的只是能够使用 List 进行数据绑定。

我试图将项目数据绑定到堆栈面板,但无法让它在 XAML 中工作。我想另一种解决方案是做我正在做的事情,并<Style>为 ListView 重写。关于正确方法的任何建议?

4

1 回答 1

7

如果您不希望它们是可选的,这听起来确实像是您可以使用ListBox或 ItemsControl 做的事情。我们还可以利用IsSharedSizeScope附加属性来保持我们的列的格式均匀。此外,请查看 ListBox 链接底部的 Inheritance Higharchy,它应该可以帮助您确定不同场景所需的列表类型。

尝试这样的事情:

<DockPanel>
  <Label Content="{Binding Path=Identifier.Name, Mode=OneWay}" />
  <ListBox ItemsSource="{Binding Path=Values, Mode=OneWay}"
           Grid.IsSharedSizeScope="True">
    <ListBox.ItemTemplate>
      <DataTemplate>
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="OptionColumn" />
            <ColumnDefinition SharedSizeGroup="ValueColumn" />
          </Grid.ColumnDefinitions>
          <TextBlock Grid.Column="0" Text="{Binding Option}" />
          <TextBlock Grid.Column="1" Text="{Binding Value}" />
        </Grid>
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
</DockPanel>
于 2009-06-05T21:06:38.323 回答