微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Datagrid 列绑定到类

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?