c# - WPF ItemsControl 和错误的 DataGrid
问题描述
基本上我有两个相关的问题:
1)与此问题相同的问题如何使 ItemsControl 拉伸以填充所有可用空间?,基本上ItemsControl
不会填满整个空间,并且提供的解决方案DockedPanel
对我不起作用,因为我需要将项目垂直而不是水平堆叠。除了使用复杂的动态网格之外,还有其他方法可以实现这一点吗?
DataGrid
2)当我使用这个问题WPF MVVM Multiple ContentControls in TabControl中的方法时,呈现的方式似乎有些不对劲。
标题由于某种原因被压到一边,而且在表格中添加信息也使它看起来很糟糕。如果我不使用这种方法ItemsControl
来显示表格,这通常不会发生。
TabControl 的代码:
<TabControl ItemsSource="{Binding Tabs}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding Content}"/>
</ScrollViewer>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
代码DataGrid
在UserControl
( view.xaml
) 中,它与上述内容绑定TabControl
:
<DataGrid Grid.Row="0" Margin="10 10 10 0" ItemsSource="{Binding List}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="ID">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Id}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
//...
//Same for other columns
//...
</DataGrid>
删除标题样式没有帮助。
解决方案
从ScrollViewer
您的ContentTemplate
. DataGrid
有自己的元素ScrollViewer
内置到它的 defaultControlTemplate
中。
推荐阅读
- c++ - 在 C++ 中包含库 database.txt 文件时出错
- python - 从文件中读取时计算一行中第一个单词出现的次数,但有异常
- python - 将值返回到熊猫 df 中的新列
- ios - 通过浮点值将按钮的图像从一个图像淡化到另一个图像
- sql - 在excel中显示udf返回的数组
- sql - 在 SQL Server 中编写具有依赖关系的插入脚本
- java - javax 验证大于或小于其他属性
- java - 如何使 GWT 超级开发模式在 HTML iframe 中的 GWT 元素上工作?
- android - (Android opencv) 对 `cv::DescriptorMatcher::knnMatch` 的未定义引用
- apache-spark - row_number over ... 无界前行和无界后行之间的行在 spark 中不兼容