如何在数据网格 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>

如何在数据网格 WPF 上设置特定的表列

您可以通过设置 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 属性,可以设置自定义名称。