In xaml side add this part :
<DataTemplate x:Key="columnTemplate">
<Button x:Uid="rowButton" Content="Do some thing" Margin="2" IsEnabled="{Binding IsActive}"/>
</DataTemplate>
In server side do some thing like this :
private void FillDate()
{
ObservableCollection<mydate> data = new ObservableCollection<mydate>();
for (int i = 1; i <= 20; i++)
data.Add(new MyDate()
{
ID = i,
Name = "Name" + i,
Family = "Family" + i,
IsActive = true
});
dataGrid.ItemsSource = data;
DataGridTemplateColumn tColumn = new DataGridTemplateColumn();
tColumn.CellTemplate = (DataTemplate)this.FindResource("columnTemplate");
tColumn.Header = "Button column";
dataGrid.Columns.Add(tColumn);
}
...
public class MyDate : INotifyPropertyChanged
{
public MyDate() { }
private int _iD;
public int ID
{
get { return _iD; }
set
{
_iD = value;
Notify("ID");
}
}
private string _name = "";
public string Name
{
get
{
return _name;
}
set
{
_name = value;
Notify("Name");
}
}
private string _family = "";
public string Family
{
get
{
return _family;
}
set
{
_family = value;
Notify("Family");
}
}
private bool _isActive = false;
public bool IsActive
{
get { return _isActive; }
set
{
_isActive = value;
Notify("IsActive");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void Notify(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}