Creating a Flat TreeDataGrid
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
There are two parts to any TreeDataGrid
:
The "Source" which is defined in code and describes how your data model will map to the rows and columns of the TreeDataGrid
The control which can be instantiated from XAML or from code and describes how the TreeDataGrid
will appear
The source is usually defined at the view model layer if you're using the MVVM pattern but can also be defined in code-behind. This introduction will assume that you're using the MVVM pattern.
This article assumes that you are using C# 10 and have enabled.
First follow the installation instructions, ensuring that you add the theme to your App.axaml
file.
The data model is your "source" data that will be displayed in the TreeDataGrid
and will be specific to your application. For this introduction we will be using a very simple Person
class:
First we create a MainWindowViewModel
containing our simple dataset:
TreeDataGrid
sourceThe source defines how to map the data model to rows and columns. Because we're displaying non-hierarchical data, we'll use a FlatTreeDataGridSource<Person>
. FlatTreeDataGridSource
is a generic class where the type parameter represents the data model type, in this case Person
.
The constructor to FlatTreeDataGridSource
accepts a collection of type IEnumerable<T>
to which we'll pass our data set.
We'll create the source in the MainWindowViewModel
constructor, add three columns, and expose the source in a property:
The columns above are defined as TextColumn
s - again, TextColumn
is a generic class that accepts the data model type and a value type. The first parameter is the header to display in the column and the second parameter is a lambda expression which selects the value to display from the data model.
TreeDataGrid
controlIt's now time to add the TreeDataGrid
control to a window and bind it to the source.
Run the application and you should see the data appear:
We store the data in an which will allow the TreeDataGrid
to listen for changes in the data and automatically update the UI.