我怎么能够:
这是代码:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
感谢Kjetil,GridViewColumn.CellTemplate运行良好,自动宽度当然有效但是当使用长于列宽的数据更新ObservativeCollection"Collection"时,列大小不会自行更新,因此这只是一个解决方案.初始显示数据:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 我正在尝试为WPF添加淡入淡出效果(动画)UserControls(尽管FrameworkElement为了使其更通用).
如果我让Loaded事件触发初始淡入,则淡入淡出动画有时会在UserControl显示之前启动.结果是一团糟.例如,如果UserControl在Loaded事件处理程序中执行冗长(十分之几秒),例如执行查询,则会发生这种情况.
因此,我需要处理FrameworkElement/UserControl在呈现内容时获取的一些事件,然后启动淡入.该System.Windows.Window有一个ContentRendered事件,但是用户控件没有.那么,在渲染FrameworkElement(或UserControl)时会触发什么事件?
我想创建一个ListView,它有两列固定宽度,第三列填充剩余空间.所以像这样:
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="*" />
<GridViewColumn Header="Age" Width="50" />
<GridViewColumn Header="Gender" Width="50" />
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
问题是我无法找到一种方法来让Name列填充剩余的空间,因为设置宽度*不起作用.看起来有一种方法可以使用值转换器来实现这一点,但似乎应该有一种更简单的方法.与DataGrid控件一样,您可以使用*s 指定列的宽度.