{"id":21721202,"url":"https://github.com/danielearwicker/eventless","last_synced_at":"2025-04-12T21:33:48.911Z","repository":{"id":7175227,"uuid":"8476849","full_name":"danielearwicker/eventless","owner":"danielearwicker","description":"Functional Reactive Programming for .NET and XAML/WPF","archived":false,"fork":false,"pushed_at":"2016-12-24T20:59:42.000Z","size":98,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T15:47:59.327Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielearwicker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-02-28T10:28:07.000Z","updated_at":"2025-01-31T19:28:58.000Z","dependencies_parsed_at":"2022-08-20T00:31:15.595Z","dependency_job_id":null,"html_url":"https://github.com/danielearwicker/eventless","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielearwicker%2Feventless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielearwicker%2Feventless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielearwicker%2Feventless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielearwicker%2Feventless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielearwicker","download_url":"https://codeload.github.com/danielearwicker/eventless/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248636128,"owners_count":21137381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-26T02:14:36.989Z","updated_at":"2025-04-12T21:33:48.874Z","avatar_url":"https://github.com/danielearwicker.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eventless\n\n*Functional Reactive Programming for .NET and WPF/XAML*\n\n# Installation\n\n    Install-Package Eventless\n\n# Documentation\n\nThe assembly, `Eventless.dll`, is fully documented for Visual Studio auto-completion.\n\n[Browse the documentation](http://earwicker.com/eventless/)\n\n# Quick Start\n\nAll the facilities are in the `Eventless` namespace:\n\n```csharp\nusing Eventless;\n```\n\nYou can create a model that mixes mutable data and computed (immutable) data like this:\n\n```csharp\npublic class Person\n{\n    public IMutable\u003cstring\u003e FirstName { get; } = Mutable.From(string.Empty);\n    public IMutable\u003cstring\u003e LastName { get; } = Mutable.From(string.Empty);\n    \n    public IImmutable\u003cstring\u003e FullName { get; }\n\n    public Person()\n    {\n        FullName = Computed.From(() =\u003e $\"{FirstName.Value} {LastName.Value}\");\n    }\n}\n```\n\nThis can then be used as the view model of a simple window (note that you have to bind to the `Value` property in the binding expressions).\n\n```xaml\n\u003cWindow x:Class=\"WpfApplication1.MainWindow\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n        xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n        xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n        xmlns:local=\"clr-namespace:WpfApplication1\"\n        mc:Ignorable=\"d\"\n        Title=\"MainWindow\" Height=\"350\" Width=\"525\"\u003e\n    \n    \u003cWindow.DataContext\u003e\n        \u003clocal:Person/\u003e\n    \u003c/Window.DataContext\u003e\n    \n    \u003cGrid Margin=\"8\"\u003e\n        \u003cGrid.RowDefinitions\u003e\n            \u003cRowDefinition Height=\"Auto\"/\u003e\n            \u003cRowDefinition Height=\"Auto\"/\u003e\n            \u003cRowDefinition Height=\"Auto\"/\u003e\n        \u003c/Grid.RowDefinitions\u003e\n        \u003cGrid.ColumnDefinitions\u003e\n            \u003cColumnDefinition Width=\"Auto\"/\u003e\n            \u003cColumnDefinition Width=\"*\"/\u003e\n        \u003c/Grid.ColumnDefinitions\u003e\n        \n        \u003cLabel Grid.Row=\"0\" Grid.Column=\"0\"\u003eFirst name\u003c/Label\u003e\n        \u003cTextBox Grid.Row=\"0\" Grid.Column=\"1\" \n                 Text=\"{Binding FirstName.Value, UpdateSourceTrigger=PropertyChanged}\"/\u003e\n           \n        \u003cLabel Grid.Row=\"1\" Grid.Column=\"0\"\u003eLast name\u003c/Label\u003e\n        \u003cTextBox Grid.Row=\"1\" Grid.Column=\"1\" \n                 Text=\"{Binding LastName.Value, UpdateSourceTrigger=PropertyChanged}\"/\u003e\n\n        \u003cLabel Grid.Row=\"2\" Grid.Column=\"0\"\u003eFull name\u003c/Label\u003e\n        \u003cLabel Grid.Row=\"2\" Grid.Column=\"1\" \n               Content=\"{Binding FullName.Value}\"/\u003e\n    \u003c/Grid\u003e\n\u003c/Window\u003e\n```\n\n# Compatibility\n\nAt the moment `Eventless` is built for old-school WPF as a .NET 4.5 assembly. But I'm interested in seeing how it fits with Universal Windows Platform. Anyone with experience of that platform is encouraged to investigate and send me a pull request!\n\n# MIT License\n\nhttps://opensource.org/licenses/MIT\n\nCopyright (c) 2013-2016 Daniel Earwicker \u003cdan@earwicker.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielearwicker%2Feventless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielearwicker%2Feventless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielearwicker%2Feventless/lists"}