在DataTemplate中显示数据绑定的StackPanel

Wil*_*ins 1 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}" />
Run Code Online (Sandbox Code Playgroud)

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

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

rmo*_*ore 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>
Run Code Online (Sandbox Code Playgroud)