两列DataGrid:属性名称和属性值

时间:2013-10-04 17:35:32

标签: wpf mvvm wpfdatagrid

我有一个Settings类,如下所示:

public class Settings {
    public string Foo { get; set; }
    public int Bar { get; set; }
}

我可能有以下实例:

new Settings {
    Foo = "xxx",
    Bar = 20
}

我想在DataGrid中显示这样的类:

--------------------
| Settings | Value |
--------------------
|   Foo    |  xxx  |
|   Bar    |  20   |

这样做的正确方法是什么?我知道我可以创建一些临时类(具有两个属性),并且使用反射创建该类的实例作为Settings中的属性,但是我可能有更简洁的方法来实现它,利用绑定(双向)等。

我正在使用WPF + MVVM。

2 个答案:

答案 0 :(得分:1)

如果您只是展示这样的单个类实例,最好不要使用DataGrid。只需为您的班级构建自定义DataTemplate,即可根据2x3网格显示您的选择。

答案 1 :(得分:-1)

您可以将类绑定到DataGrid中。

首先,您必须将属性绑定到DataGrid中的列。

<DataGrid Name="dtgSettings" Height="200">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Foo" Width="150" Binding="{Binding Foo}" />
        <DataGridTextColumn Header="Bar" Width="150" Binding="{Binding Bar}" />
    </DataGrid.Columns>
</DataGrid>

之后,只需添加新设置即可。

dtgSettings.Items.Add( new Settings
{
    Foo = "Foo",
    Bar = 0,
};