我有对象我正在数据绑定到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>
。有关正确方法的任何建议吗?
答案 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>