Skip to content

Commit 424e465

Browse files
committed
2 parents 9d1c0e0 + 0b83a9d commit 424e465

File tree

4 files changed

+550
-346
lines changed

4 files changed

+550
-346
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Globalization;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using System.Windows.Data;
8+
9+
namespace MaterialDesignThemes.Wpf.Converters
10+
{
11+
public enum MathOperation
12+
{
13+
Add,
14+
Sub,
15+
Multiply,
16+
Divide
17+
}
18+
19+
public sealed class MathConverter : IValueConverter
20+
{
21+
public MathOperation Operation { get; set; }
22+
23+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
24+
{
25+
double value1, value2;
26+
if (Double.TryParse(value.ToString(), out value1) && Double.TryParse(parameter.ToString(), out value2))
27+
{
28+
switch (Operation)
29+
{
30+
default:
31+
case MathOperation.Add:
32+
return value1 + value2;
33+
case MathOperation.Divide:
34+
return value1 / value2;
35+
case MathOperation.Multiply:
36+
return value1 * value2;
37+
case MathOperation.Sub:
38+
return value1 - value2;
39+
}
40+
}
41+
42+
return Binding.DoNothing;
43+
}
44+
45+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
46+
{
47+
return Binding.DoNothing;
48+
}
49+
}
50+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Diagnostics;
4+
using System.Globalization;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
using System.Windows.Data;
9+
10+
namespace MaterialDesignThemes.Wpf.Converters
11+
{
12+
public sealed class MathMultipleConverter : IMultiValueConverter
13+
{
14+
public MathOperation Operation { get; set; }
15+
16+
public object Convert(object[] value, Type targetType, object parameter, CultureInfo culture)
17+
{
18+
double value1, value2;
19+
if (Double.TryParse(value[0].ToString(), out value1) && Double.TryParse(value[1].ToString(), out value2))
20+
{
21+
switch (Operation)
22+
{
23+
default:
24+
case MathOperation.Add:
25+
return value1 + value2;
26+
case MathOperation.Divide:
27+
return value1 / value2;
28+
case MathOperation.Multiply:
29+
return value1 * value2;
30+
case MathOperation.Sub:
31+
return value1 - value2;
32+
}
33+
}
34+
35+
return Binding.DoNothing;
36+
}
37+
38+
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
39+
{
40+
throw new NotImplementedException();
41+
}
42+
}
43+
}

MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@
216216
<Compile Include="Converters\ClockItemIsCheckedConverter.cs" />
217217
<Compile Include="Converters\ClockLineConverter.cs" />
218218
<Compile Include="Converters\DrawerOffsetConverter.cs" />
219+
<Compile Include="Converters\MathConverter.cs" />
220+
<Compile Include="Converters\MathMultipleConverter.cs" />
219221
<Compile Include="Converters\NotConverter.cs" />
220222
<Compile Include="Converters\NotNullToVisibilityConverter.cs" />
221223
<Compile Include="Converters\NotZeroToVisibilityConverter.cs" />

0 commit comments

Comments
 (0)