DrB*_*oom 5 data-binding wpf itemscontrol
我刚刚开始学习WPF,我试图在ItemsControl中使用GridViewRowPresenter来实质上复制HTML中的简单表的功能.ListView不合适,因为它是交互式的(我不想要).我绑定到未知数量的对象的通用列表.
我有一个自定义对象的列表,它有两个字符串属性:FirstName和LastName.以下代码有效:
<ItemsControl Name="myItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FirstName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
虽然这没有任何结果:
<ItemsControl Name="myItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<GridViewRowPresenter>
<GridViewRowPresenter.Columns>
<GridViewColumnCollection>
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}"></GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}"></GridViewColumn>
</GridViewColumnCollection>
</GridViewRowPresenter.Columns>
</GridViewRowPresenter>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始,我非常感谢任何帮助!谢谢!
Ken*_*art 11
如果你想项目的非交互式网格,你可以使用ItemsControl一个Grid使用共享尺寸范围:
<ItemsControl ItemsSource="{Binding Items}" Grid.IsSharedSizeScope="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" SharedSizeGroup="FirstName"/>
<ColumnDefinition Width="*" SharedSizeGroup="LastName"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Grid.Column="1" Text="{Binding LastName}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
一种更有效的方法是编写自己的Panel子类,其工作方式与Grid(可能是子类Grid)类似,但会根据需要自动添加行.然后使用该Panel作为ItemsPanel的ItemsControl.