如何在数据网格 WPF 上设置特定的表列
本文关键字:设置 WPF 数据 数据网 网格 | 更新日期: 2023-09-27 18:34:05
对于初学者来说,这里是代码,我试图做的是从表"Producto"(producto,nombre和preciobase)中获取列名,但是当我处理下面发布的内容时,它还带来了producto和menuproducto(ProductoMenuProducto)之间的关系,以及来自Producto和ProdMatP(ProductoProdMatP)的关系。
如何摆脱那些由于某种原因作为列名出现的关系?
(网格图像:https://i.stack.imgur.com/EmuZs.jpg)
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:pry01_Cocina" x:Class="pry01_Cocina.Producto"
Title="Producto" Height="431.092" Width="760.384" Loaded="Window_Loaded" Closing="Window_Closing">
<Window.Resources>
<local:DsCocina x:Key="dsCocina"/>
<CollectionViewSource x:Key="menuViewSource" Source="{Binding Producto, Source={StaticResource dsCocina}}"/>
</Window.Resources>
<Grid DataContext="{StaticResource menuViewSource}">
<DataGrid x:Name="GridMenuProducto" Margin="0,22,0,0" VerticalAlignment="Top" Height="251" ItemsSource="{Binding Mode=OneWay}" IsEnabled="False"/>
</Grid>
</Window>
您可以通过设置 DataGrid ItemsSource 来自定义 DataGrid 列的集和外观:
ItemsSource="{Binding GridMenuProducto, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
其中 GridMenuProducto 应该是实体的集合
此外,还必须设置 DataGrid 属性 AutoGenerateColumns="False",以防止添加与实体中的每个属性关联的列。
然后,您可以将列绑定到实体属性,如下所示:
<DataGrid ItemsSource="{Binding GridMenuProducto, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True"
Margin="0,22,0,0"
VerticalAlignment="Top" AutoGenerateColumns="False" Height="251">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Producto}" Header="Producto" Width="SizeToCells" MinWidth="100" />
<DataGridTextColumn Binding="{Binding Path=Nombre}" Header="Nombre" Width="SizeToCells" MinWidth="100" />
<DataGridTextColumn Binding="{Binding Path=PrecioBase, StringFormat={}{0:0.00}}" Header="PrecioBase" MinWidth="130" Width="SizeToCells" />
<!-- some other columns -->
</DataGrid.Columns>
</DataGrid>
请注意,使用列定义的 Header 属性,可以设置自定义名称。