在DataTemplate中显示数据绑定的StackPanel

时间:2009-06-05 19:42:22

标签: c# wpf xaml listbox stackpanel

我有对象我正在数据绑定到WPF中的ListBox。以下是最终结果的样子:

-------------------------------
| Name    | Opt1    |  Value1 |
|         | Opt2    |  Value2 |
|         | Opt3    |  Value3 |
|         | Opt4    |  Value4 |
-------------------------------

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

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

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

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

1 个答案:

答案 0 :(得分:7)

如果您不希望它们可以选择,这听起来就像您可以使用ListBox或ItemsControl。我们还可以使用IsSharedSizeScope附加属性来保持我们的列格式化甚至是。另外,看一下ListBox链接底部的继承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>