Отображение StackPanel с привязкой к данным внутри DataTemplate
-
12-09-2019 - |
Вопрос
У меня есть объекты, которые я привязываю к списку в 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>