Exibindo um StackPanel ligado a dados dentro de um datatemplate
-
12-09-2019 - |
Pergunta
Eu tenho objetos que estou banco de dados em uma caixa de listagem no WPF. Aqui está como o resultado final deve ser:
------------------------------- | Name | Opt1 | Value1 | | | Opt2 | Value2 | | | Opt3 | Value3 | | | Opt4 | Value4 | -------------------------------
Essencialmente, eu tenho um DataTemplate para a variável geral e, em seguida, o combo opt/value possui seu próprio datatemplate. Estou tentando exibir a lista de valores da maneira mais simples possível.
<Label Content="{Binding Path=Identifier.Name, Mode=OneWay}" />
<ListView Grid.Column="1" HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=Values, Mode=OneWay}" />
A ligação para valores é atualmente apenas um <Grid>
com 2 <Label>
'S e ListView possuem muitos recursos que eu não assisto, como o estilo de fronteira, as seleções e outros, quando tudo o que eu realmente quero é poder ser capaz de usar o banco de dados usando uma lista.
Eu tentei banco de dados os itens em um StackPanel, mas não consegui fazê -lo funcionar no XAML. Suponho que outra solução é fazer o que estou fazendo e reescrever o <Style>
Para ListView. Alguma sugestão sobre a maneira correta de fazer isso?
Solução
Certamente parece algo que você pode fazer com um ListBox, ou um itemsControl se você não quiser que eles sejam selecionáveis. Também podemos usar o IsSharedsizescope Propriedade anexada para manter nossas colunas formatadas e uniformes. Além disso, dê uma olhada na alta marca da herança na parte inferior do link da ListBox, deve ajudá -lo a determinar qual tipo de lista você precisa para diferentes cenários.
Tente algo assim:
<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>