如何在datagrid WPF上设置特定的表colums

时间:2016-02-10 11:13:24

标签: c# wpf xaml visual-studio-2015

对于初学者来说这里是代码,我想要做的是从表“Producto”(producto,nombre和preciobase)中带来列名,但是当我使用下面发布的内容时,它也会带来之间的关系producto和menuproducto(ProductoMenuProducto),以及Producto和ProdMatP(ProductoProdMatP)之间的关系。

我如何摆脱因某些原因而成为列名的关系?

(网格图像:http://imgur.com/G4L1dQE

<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>

1 个答案:

答案 0 :(得分:0)

您可以通过设置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>

请注意,使用列定义的标题属性,您可以设置自定义名称。