Отображение StackPanel с привязкой к данным внутри DataTemplate

StackOverflow https://stackoverflow.com/questions/957771

Вопрос

У меня есть объекты, которые я привязываю к списку в WPF.Вот как должен выглядеть конечный результат:

-------------------------------
| 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>в s и ListView есть много функций, которые я не просматриваю, таких как стиль границ, выделение и тому подобное, когда все, чего я действительно хочу, - это иметь возможность привязывать данные с помощью списка.

Я пытался привязать элементы к stackpanel, но не смог заставить это работать в XAML.Я полагаю, что другое решение состоит в том, чтобы сделать то, что я делаю, и переписать <Style> для просмотра списка.Есть какие-нибудь предложения о том, как правильно это сделать?

Это было полезно?

Решение

Это, конечно, звучит как нечто, что вы можете сделать с помощью Поле со списком, или ItemsControl, если вы не хотите, чтобы они были доступны для выбора.Мы также можем воспользоваться Разделяемый масштабоскоп прикрепленное свойство для сохранения наших столбцов отформатированными и ровными.Кроме того, взгляните на наследование Higharchy в нижней части ссылки ListBox, это должно помочь вам определить, какой тип списка вам нужен для различных сценариев.

Попробуйте что-то вроде этого:

<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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top