我有一些对象正在数据绑定(bind)到 WPF 中的 ListBox。最终结果应该如下所示:
------------------------------- | Name | Opt1 | Value1 | | | Opt2 | Value2 | | | Opt3 | Value3 | | | Opt4 | Value4 | -------------------------------
Essentially i've got a DataTemplate for the overall variable, and then the Opt/Value combo has it's own DataTemplate. I'm trying to display the list of values as simply as possible.
<Label Content="{Binding Path=Identifier.Name, Mode=OneWay}" />
<ListView Grid.Column="1" HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=Values, Mode=OneWay}" />
Values 的绑定(bind)目前只有一个 <Grid>
和 2 个 <Label>
并且 ListView 有很多我不关注的功能,例如边框样式、选择等等,而我真正想要的是能够数据绑定(bind)使用列表。
我已尝试将项目数据绑定(bind)到堆栈面板,但无法使其在 XAML 中工作。我想另一种解决方案是做我正在做的事情,并为 ListView 重写 <Style>
。关于正确执行此操作的任何建议?
最佳答案
这听起来确实像是可以用 ListBox 做的事情, 或者一个 ItemsControl 如果你不希望它们是可选的。我们还可以利用 IsSharedSizeScope附加属性使我们的列保持格式化和均匀。另外,请查看 ListBox 链接底部的 Inheritance 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>
关于c# - 在 DataTemplate 中显示数据绑定(bind)的 StackPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/957771/