如何解决Datagrid 列绑定到类
我有一个 DataGrid 来显示 ProductModel 类型的产品。在每个产品中,我都有一个 ProductType 类型的 ProductTypeModel。我无法将此 ProductTypeModel 类的属性绑定到数据网格列。
绑定其他属性,如 Id、UserId、ProductLotNumber 等,工作正常并显示在数据网格上。我唯一无法展示的是 ProductType 和它的嵌套属性。
(我使用的是 Caliburn.Micro)
这是产品模型
public class ProductModel : IProductionInputItemmodel,IProductionOutputItemmodel
{
public int Id { get; set; }
public string UserId { get; set; }
public ProductTypeModel ProductType { get; set; }
public string ProductLotNumber { get; set; }
public int CropYear { get; set; }
public string ProductNote { get; set; }
public bool IsActive { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
}
这里是 ProductTypeModel
public class ProductTypeModel
{
public int Id { get; set; }
public string UserId { get; set; }
public string ProductName { get; set; }
public bool IsAseptic { get; set; }
public bool IsPuree { get; set; }
public bool IsPureeConcentrate { get; set; }
public bool IsClearJuice { get; set; }
public bool IsCloudyJuice { get; set; }
public bool IsClearConcentrate { get; set; }
public bool IsCloudyConcentrate { get; set; }
public bool IsOrganic { get; set; }
public DateTime CreateDate { get; set; } = DateTime.UtcNow;
public DateTime UpdateDate { get; set; } = DateTime.UtcNow;
public bool IsActive { get; set; }
}
我想要实现的是在单元格的堆栈面板中显示 ProductName 和其他布尔属性。但我不知道怎么做。
这是我到现在为止可以想出但无法实现的内容:
<ScrollViewer>
<Grid>
<Grid.ColumnDeFinitions>
...
</Grid.ColumnDeFinitions>
<Grid.RowDeFinitions>
...
</Grid.RowDeFinitions>
<DataGrid Grid.Row="1" Grid.Column="1" x:Name="Products">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
Ürün Türü
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding ProductType.ProductName}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Foreground="Purple" FontSize="8" Text="Aseptik " Visibility="{Binding ProductType.IsAseptic,Converter={StaticResource BooleanToVisibilityConverter},FallbackValue=Collapsed}"/>
<TextBlock Foreground="DarkGreen" FontSize="8" Text="Organik " Visibility="{Binding ProductType.IsOrganic,FallbackValue=Collapsed}"/>
<TextBlock Foreground="Red" Text="Püre " FontSize="8" Visibility="{Binding ProductType.IsPuree,FallbackValue=Collapsed}"/>
<TextBlock Foreground="Red" Text="Püre Konsantre " FontSize="8" Visibility="{Binding ProductType.IsPureeConcentrate,FallbackValue=Collapsed}"/>
<TextBlock Foreground="Red" Text="Berrak NFC " FontSize="8" Visibility="{Binding ProductType.IsClearJuice,FallbackValue=Collapsed}"/>
<TextBlock Foreground="Red" Text="Bulanık NFC " FontSize="8" Visibility="{Binding ProductType.IsCloudyJuice,FallbackValue=Collapsed}"/>
<TextBlock Foreground="Red" Text="Berrak Konsantre " FontSize="8" Visibility="{Binding ProductType.IsClearConcentrate,FallbackValue=Collapsed}"/>
<TextBlock Foreground="Red" Text="Bulanık Konsantre " FontSize="8" Visibility="{Binding ProductType.IsCloudyConcentrate,FallbackValue=Collapsed}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Lot Numarası" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</ScrollViewer>
</DockPanel>
还有这里的视图模型:
public class Productviewmodel : Screen
{
private readonly IEventAggregator _events;
private readonly IProductEndPoint _productEndPoint;
public Productviewmodel(IEventAggregator events,IProductEndPoint productEndPoint)
{
_events = events;
_productEndPoint = productEndPoint;
}
private BindableCollection<ProductModel> _products;
public BindableCollection<ProductModel> Products
{
get { return _products; }
set
{
_products = value;
NotifyOfPropertyChange(() => Products);
}
}
protected override async void OnViewLoaded(object view)
{
base.OnViewLoaded(view);
var products = await _productEndPoint.GetAllProducts();
Products = new BindableCollection<ProductModel>(products);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。