Skip to content

Commit c3acbf6

Browse files
committed
TreeDataGrid bindings
1 parent b3ea1fb commit c3acbf6

File tree

3 files changed

+103
-1
lines changed

3 files changed

+103
-1
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
6+
<Version>$(FuncUIVersion)</Version>
7+
<Authors>JaggerJo</Authors>
8+
<Product>Avalonia.FuncUI.TreeDataGrid</Product>
9+
<PackageId>Avalonia.FuncUI.TreeDataGrid</PackageId>
10+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
11+
<PackageProjectUrl>https://github.com/fsprojects/Avalonia.FuncUI</PackageProjectUrl>
12+
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
13+
<Title>Avalonia FuncUI TreeDataGrid</Title>
14+
<PackageVersion>$(FuncUIVersion)</PackageVersion>
15+
<Description>TreeDataGrid bindings for Avalonia.FuncUI</Description>
16+
<PackageIcon>nuget_icon.png</PackageIcon>
17+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
18+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
19+
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
20+
</PropertyGroup>
21+
22+
<ItemGroup>
23+
<Compile Include="Library.fs" />
24+
</ItemGroup>
25+
26+
<ItemGroup>
27+
<None Include="..\..\github\img\nuget_icon.png">
28+
<Pack>True</Pack>
29+
<PackagePath>\</PackagePath>
30+
</None>
31+
</ItemGroup>
32+
33+
<ItemGroup>
34+
<PackageReference Include="Avalonia.Controls.TreeDataGrid" Version="11.1.1" />
35+
<PackageReference Update="FSharp.Core" Version="6.0.0" />
36+
</ItemGroup>
37+
38+
<ItemGroup>
39+
<ProjectReference Include="..\Avalonia.FuncUI.Elmish\Avalonia.FuncUI.Elmish.fsproj" />
40+
<ProjectReference Include="..\Avalonia.FuncUI\Avalonia.FuncUI.fsproj" />
41+
</ItemGroup>
42+
43+
</Project>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
namespace Avalonia.FuncUI.DSL
2+
3+
open Avalonia.Controls
4+
open Avalonia.FuncUI.Types
5+
open Avalonia.FuncUI.Builder
6+
open Avalonia.Controls.Models.TreeDataGrid
7+
open Avalonia.Controls.Primitives
8+
open System
9+
10+
[<AutoOpen>]
11+
module TreeDataGrid =
12+
13+
let create (attrs: IAttr<TreeDataGrid> list): IView<TreeDataGrid> =
14+
ViewBuilder.Create<TreeDataGrid>(attrs)
15+
16+
type TreeDataGrid with
17+
18+
static member autoDragDropRows<'t when 't :> TreeDataGrid>(autoDragDropRows: bool) : IAttr<'t> =
19+
AttrBuilder<'t>.CreateProperty<bool>(TreeDataGrid.AutoDragDropRowsProperty, autoDragDropRows, ValueNone)
20+
21+
static member canUserResizeColumns<'t when 't :> TreeDataGrid>(canUserResizeColumns: bool) : IAttr<'t> =
22+
AttrBuilder<'t>.CreateProperty<bool>(TreeDataGrid.CanUserResizeColumnsProperty, canUserResizeColumns, ValueNone)
23+
24+
static member canUserSortColumns<'t when 't :> TreeDataGrid>(canUserSortColumns: bool) : IAttr<'t> =
25+
AttrBuilder<'t>.CreateProperty<bool>(TreeDataGrid.CanUserSortColumnsProperty, canUserSortColumns, ValueNone)
26+
27+
static member columns<'t when 't :> TreeDataGrid>(columns: IColumns) : IAttr<'t> =
28+
AttrBuilder<'t>.CreateProperty<IColumns>(TreeDataGrid.ColumnsProperty, columns, ValueNone)
29+
30+
static member elementFactory<'t when 't :> TreeDataGrid>(factory: TreeDataGridElementFactory) : IAttr<'t> =
31+
AttrBuilder<'t>.CreateProperty<TreeDataGridElementFactory>(TreeDataGrid.ElementFactoryProperty, factory, ValueNone)
32+
33+
static member rows<'t when 't :> TreeDataGrid>(rows: IRows) : IAttr<'t> =
34+
AttrBuilder<'t>.CreateProperty<IRows>(TreeDataGrid.RowsProperty, rows, ValueNone)
35+
36+
static member scroll<'t when 't :> TreeDataGrid>(scrollable: IScrollable) : IAttr<'t> =
37+
AttrBuilder<'t>.CreateProperty<IScrollable>(TreeDataGrid.ScrollProperty, scrollable, ValueNone)
38+
39+
static member showColumnHeaders<'t when 't :> TreeDataGrid>(showHeaders: bool) : IAttr<'t> =
40+
AttrBuilder<'t>.CreateProperty<bool>(TreeDataGrid.ShowColumnHeadersProperty, showHeaders, ValueNone)
41+
42+
static member source<'t when 't :> TreeDataGrid>(dataSource: ITreeDataGridSource) : IAttr<'t> =
43+
AttrBuilder<'t>.CreateProperty<ITreeDataGridSource>(TreeDataGrid.SourceProperty, dataSource, ValueNone)
44+
45+
static member rowDragStarted<'t when 't :> TreeDataGrid>(func: TreeDataGridRowDragStartedEventArgs -> unit, ?subPatchOptions) =
46+
AttrBuilder<'t>.CreateSubscription<TreeDataGridRowDragStartedEventArgs>(TreeDataGrid.RowDragStartedEvent, func, ?subPatchOptions = subPatchOptions)
47+
48+
static member rowDragOver<'t when 't :> TreeDataGrid>(func: TreeDataGridRowDragEventArgs -> unit, ?subPatchOptions) =
49+
AttrBuilder<'t>.CreateSubscription<TreeDataGridRowDragEventArgs>(TreeDataGrid.RowDragOverEvent, func, ?subPatchOptions = subPatchOptions)
50+
51+
static member rowDrop<'t when 't :> TreeDataGrid>(func: TreeDataGridRowDragEventArgs -> unit, ?subPatchOptions) =
52+
AttrBuilder<'t>.CreateSubscription<TreeDataGridRowDragEventArgs>(TreeDataGrid.RowDropEvent, func, ?subPatchOptions = subPatchOptions)
53+

src/Avalonia.FuncUI.sln

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Solution Items", "_Solutio
4949
ProjectSection(SolutionItems) = preProject
5050
Directory.Build.props = Directory.Build.props
5151
NuGet.config = NuGet.config
52-
..\README.md = ..\README.md
5352
..\.github\workflows\publish.yml = ..\.github\workflows\publish.yml
5453
..\.github\workflows\pull-requests.yml = ..\.github\workflows\pull-requests.yml
54+
..\README.md = ..\README.md
5555
EndProjectSection
5656
EndProject
5757
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Examples.InlineText", "Examples\Component Examples\Examples.InlineText\Examples.InlineText.fsproj", "{B8D8C84B-05AD-475B-BE81-A30544CE0149}"
@@ -90,6 +90,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.Elmish.Tetris", "E
9090
EndProject
9191
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Examples.SettingFocus", "Examples\Examples.SettingFocus\Examples.SettingFocus.fsproj", "{2C7F4542-65CE-4EC6-9876-C1C2215EE006}"
9292
EndProject
93+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Avalonia.FuncUI.TreeDataGrid", "Avalonia.FuncUI.TreeDataGrid\Avalonia.FuncUI.TreeDataGrid.fsproj", "{44CEE173-0C6F-F12A-063B-EE64187DC6CD}"
94+
EndProject
9395
Global
9496
GlobalSection(SolutionConfigurationPlatforms) = preSolution
9597
Debug|Any CPU = Debug|Any CPU
@@ -212,6 +214,10 @@ Global
212214
{2C7F4542-65CE-4EC6-9876-C1C2215EE006}.Debug|Any CPU.Build.0 = Debug|Any CPU
213215
{2C7F4542-65CE-4EC6-9876-C1C2215EE006}.Release|Any CPU.ActiveCfg = Release|Any CPU
214216
{2C7F4542-65CE-4EC6-9876-C1C2215EE006}.Release|Any CPU.Build.0 = Release|Any CPU
217+
{44CEE173-0C6F-F12A-063B-EE64187DC6CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
218+
{44CEE173-0C6F-F12A-063B-EE64187DC6CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
219+
{44CEE173-0C6F-F12A-063B-EE64187DC6CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
220+
{44CEE173-0C6F-F12A-063B-EE64187DC6CD}.Release|Any CPU.Build.0 = Release|Any CPU
215221
EndGlobalSection
216222
GlobalSection(SolutionProperties) = preSolution
217223
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)