Skip to content

Instantly share code, notes, and snippets.

@opavlyshak
Created June 20, 2013 19:15
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save opavlyshak/5825731 to your computer and use it in GitHub Desktop.
Save opavlyshak/5825731 to your computer and use it in GitHub Desktop.
Example of data binding for DevExpress WinForms BarButtonItem. BarButtonItem doesn't support data binding, for such properties as Enabled, for instance. Binder class allows to add data binding for Enabled property.
using System;
using System.ComponentModel;
using System.Windows.Forms;
using DevExpress.XtraBars;
namespace BarButtonItemDataBindingExample
{
internal sealed class BarButtonItemBinder : IBindableComponent
{
private readonly BarButtonItem barButtonItem;
private BindingContext bindingContext;
private ControlBindingsCollection dataBindings;
public event EventHandler Disposed;
[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
public bool Enabled
{
get { return barButtonItem.Enabled; }
set { barButtonItem.Enabled = value; }
}
public ISite Site { get; set; }
public ControlBindingsCollection DataBindings
{
get { return dataBindings ?? (dataBindings = new ControlBindingsCollection(this)); }
}
public BindingContext BindingContext
{
get { return bindingContext ?? (bindingContext = new BindingContext()); }
set { bindingContext = value; }
}
public BarButtonItemBinder(BarButtonItem barButtonItem)
{
this.barButtonItem = barButtonItem;
}
public void Dispose()
{
var handler = Disposed;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
}
}
new BarButtonItemBinder(barButtonItem).DataBindings.Add(
"Enabled",
viewModel,
"CanExecute");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment