【发布时间】:2014-06-17 07:50:01
【问题描述】:
我的应用中有一个列表框控件。 我想将他的样式更改为看起来像 Datagrid(边框、列、行......)。 我不想使用标准数据网格 - 因为它的控件无法绑定 itemtemplte。 我正在尝试这样做:
<ListBox
ItemsSource="{Binding Items}"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
Name="listBox1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Border BorderThickness="1" BorderBrush="Black">
<TextBlock Text="{Binding Id}" Margin="5"/>
</Border>
<Border BorderThickness="1" BorderBrush="Black">
<TextBlock Text="{Binding Name}" Margin="5"/>
</Border>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但它看起来不太好 - 如下:
这是我想要达到的目标:
【问题讨论】:
-
你是问如何让列表框中的每一项都统一大小吗?
-
我不想使用标准数据网格 - 因为它的控件无法绑定 itemtemplte... 想详细说明这句话吗?我认为你可能弄错了,毕竟可能使用
DataGrid。 -
我可以改变lisbox,我需要什么? 3 件事 - 用于绑定我的 observable 列表的 itemsource,以及用于绑定自定义元素的 itemtemplate,最后一件事 - 像 excel 或 datagrid 这样的样式 - 我的意思是每个单元格都将被边框和统一大小到最大宽度。
-
选择器?你的意思是选择当前行?所以是的-它在弹出控件中-我实现了自定义自动完成并为用户弹出了一个列表框项-需要选择一行...
-
而不是编写复杂的控件 - 可以在 itemtemplate 中使用 stackpanel 或类似的东西吗?