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

时间:2011-04-02 08:57:18

标签: wpf datagrid datatemplate

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

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

1 个答案:

答案 0 :(得分:1)

为了显示和隐藏DataGrid列,您需要将每列的可见性绑定到确定是否显示此列的Boolean属性。关于行背景颜色,您可以使用将汽车价格转换为相关行颜色画笔的值转换器,将行背景属性绑定到汽车价格的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>