WPF - 数据网格中对象的数据模板

发布于 2024-10-29 13:03:37 字数 174 浏览 0 评论 0原文

我无法找到有关该主题的任何内容。假设我有一个汽车类型列表。每个汽车对象都有一系列属性(即品牌、型号、状况、价格、所有者等)。我想在 DataGrid 中显示汽车列表,但我想控制要显示的属性(例如,我可能不想在列表中显示车主姓名,或者我可能想根据汽车的价格)。

我该如何创建数据模板来实现这一目标(只需要一个基本示例)?

I'm having trouble finding anything on the subject. Let's say I have a list of type Car. Each car object has a range of properties (i.e. make, model, condition, price, owner, etc). I want to display the list of Cars in a DataGrid but I want control over which properties to display (for example, I may not want to display the owner name in the list or I may want to color the row of a car based on the price of the car).

How can I go about creating a data template to achieve this (just a basic example is needed)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜还是长夜 2024-11-05 13:03:37

为了显示和隐藏 DataGrid 列,您需要将每列的可见性绑定到一个布尔属性,该属性确定是否显示该列。关于行背景颜色,您可以添加一个 DataGrid 行样式,使用将汽车价格转换为相关行颜色画笔的值转换器将行背景属性绑定到汽车价格。请参阅以下概念证明:

<Window x:Class="MyProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow"
    Height="136" Width="525">
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <Setter Property="Background"
                    Value="{Binding SomeProperty,
                        Converter={StaticResource SomePropertyToBrushConverter}}"/>
        </Style>
    </DataGrid.RowStyle>

    <DataGrid.Columns>
        <DataGridTextColumn Header="Owner Name"
                            Visibility="{Binding IsOwnerNameVisible,
                                Converter={StaticResource BooleanToVisiblityConverter}}"/>
    </DataGrid.Columns>
</DataGrid>

In order to show and hide the DataGrid columns, you need to bind the visibility of each column to a Boolean property that determines whether to show this column or not. regarding the row background color you can add a DataGrid row style that binds the row Background property to the car price using a value converter that converts the car price to the relevant row color brush. See the following proof of concept:

<Window x:Class="MyProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow"
    Height="136" Width="525">
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <Setter Property="Background"
                    Value="{Binding SomeProperty,
                        Converter={StaticResource SomePropertyToBrushConverter}}"/>
        </Style>
    </DataGrid.RowStyle>

    <DataGrid.Columns>
        <DataGridTextColumn Header="Owner Name"
                            Visibility="{Binding IsOwnerNameVisible,
                                Converter={StaticResource BooleanToVisiblityConverter}}"/>
    </DataGrid.Columns>
</DataGrid>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文