Skip to content

Commit 9f11bf1

Browse files
committed
fix radiobutton enum binding
1 parent bc0f631 commit 9f11bf1

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

PixelArtTool/MainWindow.xaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:local="clr-namespace:PixelArtTool"
7-
xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="PixelArtTool.MainWindow"
7+
xmlns:System="clr-namespace:System;assembly=mscorlib" x:Name="window" x:Class="PixelArtTool.MainWindow"
88
mc:Ignorable="d"
99
Title="PixelArtTool" Height="412.222" Width="739.444" Background="#FF252526" KeyDown="OnKeyDown" KeyUp="OnKeyUp">
1010
<Window.CommandBindings>
@@ -18,6 +18,7 @@
1818
<Grid.Resources>
1919
<local:EnumBooleanConverter x:Key="ComparisonConverter" />
2020
</Grid.Resources>
21+
2122
<ToolBarTray Background="White" Height="36" VerticalAlignment="Top">
2223
<ToolBar Band="1" BandIndex="1" VerticalAlignment="Top">
2324
<Button x:Name="btnNew" ToolTip="New (clear image)" Click="OnClearButton">

PixelArtTool/MainWindow.xaml.cs

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
using Microsoft.Win32;
22
using System;
33
using System.Collections.Generic;
4+
using System.ComponentModel;
5+
using System.Globalization;
46
using System.IO;
7+
using System.Runtime.CompilerServices;
58
using System.Runtime.InteropServices;
69
using System.Windows;
710
using System.Windows.Controls;
811
using System.Windows.Data;
912
using System.Windows.Input;
13+
using System.Windows.Markup;
1014
using System.Windows.Media;
1115
using System.Windows.Media.Imaging;
1216

@@ -28,7 +32,7 @@ public enum ToolMode
2832
/// <summary>
2933
/// Interaction logic for MainWindow.xaml
3034
/// </summary>
31-
public partial class MainWindow : Window
35+
public partial class MainWindow : Window, INotifyPropertyChanged
3236
{
3337
WriteableBitmap canvasBitmap;
3438
WriteableBitmap gridBitmap;
@@ -73,21 +77,21 @@ public partial class MainWindow : Window
7377
BlendMode blendMode;
7478

7579
// TEST property binding
76-
private ToolMode myVar = ToolMode.Draw;
80+
private ToolMode myVar = ToolMode.Fill;
7781
public ToolMode CurrentTool
7882
{
7983
get
8084
{
81-
Console.WriteLine("get:"+myVar);
82-
return myVar; }
83-
set {
84-
Console.WriteLine("set:"+value);
85-
myVar = value; }
85+
return myVar;
86+
}
87+
set
88+
{
89+
myVar = value;
90+
OnPropertyChanged();
91+
}
8692
}
8793

8894

89-
//public MyLovelyEnum VeryLovelyEnum { get; set; }
90-
9195
public MainWindow()
9296
{
9397
InitializeComponent();
@@ -96,6 +100,7 @@ public MainWindow()
96100

97101
void Start()
98102
{
103+
// needed for binding
99104
DataContext = this;
100105

101106
// setup background grid
@@ -696,11 +701,9 @@ void OnKeyDown(object sender, KeyEventArgs e)
696701
{
697702
case Key.B: // brush
698703
CurrentTool = ToolMode.Draw;
699-
Console.WriteLine("drawmode");
700704
break;
701705
case Key.F: // floodfill
702706
CurrentTool = ToolMode.Fill;
703-
Console.WriteLine("fillmode");
704707
break;
705708
case Key.LeftShift: // left shift
706709
lblToolInfo.Content = "Straight Lines";
@@ -932,23 +935,25 @@ private void OnToolChanged(object sender, RoutedEventArgs e)
932935
//Enum.TryParse(tag, out currentTool);
933936
}
934937

935-
938+
// https://github.com/crclayton/WPF-DataBinding-Example
939+
public event PropertyChangedEventHandler PropertyChanged;
940+
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
941+
{
942+
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
943+
}
936944

937945
} // class
938946

947+
// https://stackoverflow.com/a/2908885/5452781
939948
public class EnumBooleanConverter : IValueConverter
940949
{
941950
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
942951
{
943-
Console.WriteLine("valueA:"+ value);
944-
Console.WriteLine("parameter:" + parameter);
945952
return value?.Equals(parameter);
946953
}
947954

948955
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
949956
{
950-
Console.WriteLine("valueB:" + value);
951-
Console.WriteLine("parameter:" + parameter);
952957
return value?.Equals(true) == true ? parameter : Binding.DoNothing;
953958
}
954959
}

0 commit comments

Comments
 (0)