在WPF MVVM中使用静态数据填充DataGrid的最佳方法是什么?

时间:2016-12-11 18:43:54

标签: wpf xaml mvvm

静态数据我的意思是很少会改变的数据。 在我的情况下,我需要创建一个表,其中前两列将是只读的,并代表每行的名称和代码。无论是否存在动态数据,都必须显示这两列的行记录。

-----------------------------------------------------------
   Column1   |  Column 2  |   Column 3   |  ..............|
-----------------------------------------------------------
Static Data  |Static Data | Dynamic Data |  Dynamic Data  |
-----------------------------------------------------------

在WPF MVVM中使用静态数据填充DataGrid的最佳方法是什么? 通过XAML或定义Enumm,或将其存储在数据库中,还是有其他方法?如果有任何记录,将从数据库加载动态数据。

1 个答案:

答案 0 :(得分:1)

最好的方法是将DataGrid的ItemsSource属性设置或绑定到IEnumerable,其中类型T具有每个"静态"的公共只读属性。数据栏:

    public class Item
    {
        public string StaticColumnA { get; } = "Some static value";
        public string StaticColumnB { get; } = "Some static value";
        public string DynamicColumnA { get; set; }
    }

    public MainWindow()
    {
        InitializeComponent();

        List<Item> theItems = new List<Item>() { };
        dg.ItemsSource = theItems;
    }

    <DataGrid x:Name="dg" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding StaticColumnA}" IsReadOnly="True" />
            <DataGridTextColumn Binding="{Binding StaticColumnB}" IsReadOnly="True" />
            <DataGridTextColumn Binding="{Binding DynamicColumnA}" />
        </DataGrid.Columns>
    </DataGrid>

数据对象应该通过公共属性返回静态值,可以是字符串,枚举值或其他值。