Skip to content

Commit a557b85

Browse files
initial commit
1 parent 388507f commit a557b85

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+3690
-0
lines changed

.gitignore

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
## Ignore Visual Studio temporary files, build results, and
2+
## files generated by popular Visual Studio add-ons.
3+
4+
# User-specific files
5+
*.suo
6+
*.user
7+
*.userosscache
8+
*.sln.docstates
9+
10+
# User-specific files (MonoDevelop/Xamarin Studio)
11+
*.userprefs
12+
13+
# Build results
14+
[Dd]ebug/
15+
[Dd]ebugPublic/
16+
[Rr]elease/
17+
[Rr]eleases/
18+
x64/
19+
x86/
20+
build/
21+
bld/
22+
[Bb]in/
23+
[Oo]bj/
24+
25+
# Visual Studio 2015 cache/options directory
26+
.vs/
27+
28+
# MSTest test Results
29+
[Tt]est[Rr]esult*/
30+
[Bb]uild[Ll]og.*
31+
32+
# NUNIT
33+
*.VisualState.xml
34+
TestResult.xml
35+
36+
# Build Results of an ATL Project
37+
[Dd]ebugPS/
38+
[Rr]eleasePS/
39+
dlldata.c
40+
41+
# DNX
42+
project.lock.json
43+
artifacts/
44+
45+
*_i.c
46+
*_p.c
47+
*_i.h
48+
*.ilk
49+
*.meta
50+
*.obj
51+
*.pch
52+
*.pdb
53+
*.pgc
54+
*.pgd
55+
*.rsp
56+
*.sbr
57+
*.tlb
58+
*.tli
59+
*.tlh
60+
*.tmp
61+
*.tmp_proj
62+
*.log
63+
*.vspscc
64+
*.vssscc
65+
.builds
66+
*.pidb
67+
*.svclog
68+
*.scc
69+
70+
# Chutzpah Test files
71+
_Chutzpah*
72+
73+
# Visual C++ cache files
74+
ipch/
75+
*.aps
76+
*.ncb
77+
*.opensdf
78+
*.sdf
79+
*.cachefile
80+
81+
# Visual Studio profiler
82+
*.psess
83+
*.vsp
84+
*.vspx
85+
86+
# TFS 2012 Local Workspace
87+
$tf/
88+
89+
# Guidance Automation Toolkit
90+
*.gpState
91+
92+
# ReSharper is a .NET coding add-in
93+
_ReSharper*/
94+
*.[Rr]e[Ss]harper
95+
*.DotSettings.user
96+
97+
# JustCode is a .NET coding add-in
98+
.JustCode
99+
100+
# TeamCity is a build add-in
101+
_TeamCity*
102+
103+
# DotCover is a Code Coverage Tool
104+
*.dotCover
105+
106+
# NCrunch
107+
_NCrunch_*
108+
.*crunch*.local.xml
109+
110+
# MightyMoose
111+
*.mm.*
112+
AutoTest.Net/
113+
114+
# Web workbench (sass)
115+
.sass-cache/
116+
117+
# Installshield output folder
118+
[Ee]xpress/
119+
120+
# DocProject is a documentation generator add-in
121+
DocProject/buildhelp/
122+
DocProject/Help/*.HxT
123+
DocProject/Help/*.HxC
124+
DocProject/Help/*.hhc
125+
DocProject/Help/*.hhk
126+
DocProject/Help/*.hhp
127+
DocProject/Help/Html2
128+
DocProject/Help/html
129+
130+
# Click-Once directory
131+
publish/
132+
133+
# Publish Web Output
134+
*.[Pp]ublish.xml
135+
*.azurePubxml
136+
## TODO: Comment the next line if you want to checkin your
137+
## web deploy settings but do note that will include unencrypted
138+
## passwords
139+
#*.pubxml
140+
141+
*.publishproj
142+
143+
# NuGet Packages
144+
*.nupkg
145+
# The packages folder can be ignored because of Package Restore
146+
**/packages/*
147+
# except build/, which is used as an MSBuild target.
148+
!**/packages/build/
149+
# Uncomment if necessary however generally it will be regenerated when needed
150+
#!**/packages/repositories.config
151+
152+
# Windows Azure Build Output
153+
csx/
154+
*.build.csdef
155+
156+
# Windows Store app package directory
157+
AppPackages/
158+
159+
# Visual Studio cache files
160+
# files ending in .cache can be ignored
161+
*.[Cc]ache
162+
# but keep track of directories ending in .cache
163+
!*.[Cc]ache/
164+
165+
# Others
166+
ClientBin/
167+
[Ss]tyle[Cc]op.*
168+
~$*
169+
*~
170+
*.dbmdl
171+
*.dbproj.schemaview
172+
*.pfx
173+
*.publishsettings
174+
node_modules/
175+
orleans.codegen.cs
176+
177+
# RIA/Silverlight projects
178+
Generated_Code/
179+
180+
# Backup & report files from converting an old project file
181+
# to a newer Visual Studio version. Backup files are not needed,
182+
# because we have git ;-)
183+
_UpgradeReport_Files/
184+
Backup*/
185+
UpgradeLog*.XML
186+
UpgradeLog*.htm
187+
188+
# SQL Server files
189+
*.mdf
190+
*.ldf
191+
192+
# Business Intelligence projects
193+
*.rdl.data
194+
*.bim.layout
195+
*.bim_*.settings
196+
197+
# Microsoft Fakes
198+
FakesAssemblies/
199+
200+
# Node.js Tools for Visual Studio
201+
.ntvs_analysis.dat
202+
203+
# Visual Studio 6 build log
204+
*.plg
205+
206+
# Visual Studio 6 workspace options file
207+
*.opt
208+
209+
# LightSwitch generated files
210+
GeneratedArtifacts/
211+
_Pvt_Extensions/
212+
ModelManifest.xml

CONTRIBUTING.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Contributing Policy
2+
3+
- Respect the [GitHub Guide](https://guides.github.com/activities/contributing-to-open-source/).
4+
5+
- For typos and spelling mistakes feel free to provide a fix and they will be merged as long they comply with the owner's style guide.
6+
- For code changes always open an issue first. This will allow to determine whether or not the change should take place. The issue should be used to discuss the change.
7+
8+
- If the pull request is accepted the project collaborators preserve the right to fix the code style before merging the changes

Icon.png

1.64 KB
Loading

README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# ![](Icon.png) Lambda Converters
2+
3+
The library allows to write `IValueConverter` and `IMultiValueConverter` objects with the most convenient syntax available, ideally, using the lambda expressions.
4+
5+
First create a (static) class and define your converters as static fields (or properties):
6+
7+
```csharp
8+
internal static class Converters
9+
{
10+
public static readonly IValueConverter VisibleIfTrue =
11+
ValueConverter.Create<bool, Visibility>(e => e.Value ? Visibility.Visible : Visibility.Collapsed);
12+
13+
public static readonly IValueConverter VisibleIfNotNull =
14+
ValueConverter.Create<object, Visibility>(e => e.Value != null ? Visibility.Visible : Visibility.Collapsed);
15+
16+
public static readonly IValueConverter ToUpperCase = ValueConverter.Create<string, string>(e => e.Value.ToUpper());
17+
}
18+
```
19+
20+
You're done! Just reference the converters with the `x:Static` expressions from your XAML files (assuming that `c` is the namespace definition for the `Converters` class):
21+
22+
```xml
23+
<Button Visibility="{Binding model.IsAvailable, Converter={x:Static c:Converters.VisibleIfTrue}}" />
24+
25+
<TextBlock Text="{Binding model.Heading, Converter={x:Static c:Converters.ToUpperCase}}" />
26+
```
27+
28+
## Features
29+
- *strongly-typed* converters
30+
- resource declaration not needed, just use the `x:Static` expressions
31+
- separate class for each converter not needed anymore
32+
- no redundant declarations: if you do not need the `ConvertBack` method, don't define it; otherwise, just put the second lambda expression
33+
- full support for the remaining parameters of the `Convert` and `ConvertBack` methods: the `culture` and the `parameter` (also strongly-typed) are accessible as well
34+
- if the conversion fails due to unexpected value types the optional [error strategy](LambdaConverters.Wpf/ConverterErrorStrategy.cs) can be specified
35+
36+
:bulb: *ReSharper users*: use the Extension Manager to install the external annotations for the library.
37+
38+
## Installation
39+
Use the NuGet package manager to install the package.
40+
41+
## Limitations
42+
The library currently supports the WPF only.
43+
44+
## Bugs? Questions? Suggestions?
45+
Please feel free to [report them](https://github.com/michael-damatov/lambda-converters/issues).
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<assembly name="LambdaConverters.Wpf">
2+
<member name="M:LambdaConverters.MultiValueConverter.Create``2(System.Func{LambdaConverters.MultiValueConverterArgs{``0},``1},System.Func{LambdaConverters.ValueConverterArgs{``1},System.Collections.Generic.IEnumerable{``0}},LambdaConverters.ConverterErrorStrategy)">
3+
<attribute ctor="M:JetBrains.Annotations.PureAttribute.#ctor" />
4+
<attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
5+
</member>
6+
<member name="M:LambdaConverters.MultiValueConverter.Create``3(System.Func{LambdaConverters.MultiValueConverterArgs{``0,``2},``1},System.Func{LambdaConverters.ValueConverterArgs{``1,``2},System.Collections.Generic.IEnumerable{``0}},LambdaConverters.ConverterErrorStrategy)">
7+
<attribute ctor="M:JetBrains.Annotations.PureAttribute.#ctor" />
8+
<attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
9+
</member>
10+
<member name="P:LambdaConverters.MultiValueConverterArgs`2.Values">
11+
<attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
12+
</member>
13+
<member name="P:LambdaConverters.MultiValueConverterArgs`1.Values">
14+
<attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
15+
</member>
16+
<member name="M:LambdaConverters.ValueConverter.Create``2(System.Func{LambdaConverters.ValueConverterArgs{``0},``1},System.Func{LambdaConverters.ValueConverterArgs{``1},``0},LambdaConverters.ConverterErrorStrategy)">
17+
<attribute ctor="M:JetBrains.Annotations.PureAttribute.#ctor" />
18+
<attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
19+
</member>
20+
<member name="M:LambdaConverters.ValueConverter.Create``3(System.Func{LambdaConverters.ValueConverterArgs{``0,``2},``1},System.Func{LambdaConverters.ValueConverterArgs{``1,``2},``0},LambdaConverters.ConverterErrorStrategy)">
21+
<attribute ctor="M:JetBrains.Annotations.PureAttribute.#ctor" />
22+
<attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" />
23+
</member>
24+
</assembly>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<package>
3+
<metadata>
4+
<id>LambdaConverters.Annotations</id>
5+
<version>1.0.0</version>
6+
<title>Lambda Converters Annotations</title>
7+
<authors>Michael Damatov</authors>
8+
<description>Annotations for the Lambda Converters</description>
9+
<projectUrl>https://github.com/michael-damatov/lambda-converters</projectUrl>
10+
<iconUrl>https://raw.githubusercontent.com/michael-damatov/lambda-converters/master/Icon.png</iconUrl>
11+
<licenseUrl>https://github.com/michael-damatov/lambda-converters/blob/master/LICENSE</licenseUrl>
12+
<tags>lambda converter external annotation</tags>
13+
<dependencies>
14+
<dependency id="Wave" version="1.0" />
15+
</dependencies>
16+
</metadata>
17+
<files>
18+
<file src="Annotations\**" target="DotFiles\Extensions\LambdaConverters.Annotations\annotations" />
19+
</files>
20+
</package>

0 commit comments

Comments
 (0)