diff --git a/data/interface.ui b/data/interface.ui
index 1e899b6102f358cee7dc67c0ae7854e8e7f30f52..e36bc6f5434f981ecf21de4cc997ec80db99f6ab 100644
--- a/data/interface.ui
+++ b/data/interface.ui
@@ -107,7 +107,6 @@
                   <object class="GtkSwitch" id="tryfilter">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <signal name="notify::active" handler="tryfilter_active_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -118,7 +117,6 @@
                   <object class="GtkSwitch" id="kickfilter">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <signal name="notify::active" handler="kickfilter_active_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c
index efe92a6f50d29f4871be944ebbeee85445e6e96a..777a227466ccf8cc466465a00d1c4f435d7915dc 100644
--- a/src/rugby-app-window.c
+++ b/src/rugby-app-window.c
@@ -54,24 +54,6 @@ scorespin_value_changed_cb (GtkSpinButton  *spin,
     gtk_range_set_range (GTK_RANGE (self->kickscale), 0.0, max_kicks);
 }
 
-static void
-tryfilter_active_cb (GObject        *gobject,
-                     GParamSpec     *pspec,
-                     RugbyAppWindow *self)
-{
-    gboolean active = gtk_switch_get_active (GTK_SWITCH (gobject));
-    gtk_widget_set_sensitive (self->tryscale, active);
-}
-
-static void
-kickfilter_active_cb (GObject        *gobject,
-                      GParamSpec     *pspec,
-                      RugbyAppWindow *self)
-{
-    gboolean active = gtk_switch_get_active (GTK_SWITCH (gobject));
-    gtk_widget_set_sensitive (self->kickscale, active);
-}
-
 static void
 scale_value_changed_cb (GtkRange       *range,
                         RugbyAppWindow *self)
@@ -132,6 +114,14 @@ rugby_app_window_init (RugbyAppWindow *self)
     gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (self->filter),
                                             filter_visible_func, self, NULL);
     gtk_tree_view_set_model (GTK_TREE_VIEW (self->treeview), self->filter);
+
+    g_object_bind_property (self->tryfilter, "active",
+                            self->tryscale, "sensitive",
+                            G_BINDING_DEFAULT);
+    g_object_bind_property (self->kickfilter, "active",
+                            self->kickscale, "sensitive",
+                            G_BINDING_DEFAULT);
+
 }
 
 static void
@@ -162,8 +152,6 @@ rugby_app_window_class_init (RugbyAppWindowClass *klass)
     gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, treeview);
 
     gtk_widget_class_bind_template_callback (widget_class, scorespin_value_changed_cb);
-    gtk_widget_class_bind_template_callback (widget_class, tryfilter_active_cb);
-    gtk_widget_class_bind_template_callback (widget_class, kickfilter_active_cb);
     gtk_widget_class_bind_template_callback (widget_class, scale_value_changed_cb);
 }