对于初学者来说这里是代码,我想要做的是从表“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>
答案 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>
请注意,使用列定义的标题属性,您可以设置自定义名称。