How to enable/disable button inside datagrid using mvvm, where column status equals some value in c#?
Thanks.
P.S. I'm new in mvvm and wpf.
Edited:
My code only prints data in Datagrid. I want to disable edit button when column status equals to 1.
You can see my code below.
Model file
public class Reestr
{
private int id;
private string date;
private string market;
private int status;
public int Id
{
get { return id; }
set {
id = value;
}
}
public string Date
{
get { return date; }
set {
date = value;
}
}
public string Market
{
get { return market; }
set {
market = value;
}
}
public int Status
{
get { return status; }
set {
status = value;
}
}
}
ViewModel file
public ReestrViewModel()
{
reestr = GetListOfReestrs();
reestr.Add(new Reestr() { Date = "01.08.2017", Market = "Market1", Status = 0 });
reestr.Add(new Reestr() { Date = "02.08.2017", Market = "Market2", Status = 1 });
}
public ObservableCollection<Reestr> ReestrItems
{
get { return reestr; }
}
public ObservableCollection<Reestr> GetListOfReestrs()
{
return reestr;
}
Xaml file:
<DataGrid GridLinesVisibility="All"
AutoGenerateColumns="False"
CanUserAddRows="False"
x:Name="ReestrDataGrid"
ItemsSource="{Binding ReestrViewModel.ReestrItems}">
<DataGrid.Columns>
<DataGridTextColumn Header="ID"
Binding="{Binding Id}"
IsReadOnly="True"
Visibility="Hidden"
Width="*"/>
<DataGridTextColumn Header="Date"
Binding="{Binding Date}"
IsReadOnly="True"
Width="*"/>
<DataGridTextColumn Header="Market"
Binding="{Binding Market}"
IsReadOnly="True"
Width="*"/>
<DataGridTextColumn Header="Status"
Binding="{Binding Status}"
IsReadOnly="True"
Width="*"/>
<DataGridTemplateColumn Header="Operations" Width="200">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button x:Name="ViewButton"
Click="ViewButton_Click"></Button>
<Button x:Name="EditButton"></Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Commandon your ViewModel that would be bound to your Button, said command needs to implement ICommand interface which also consists of CanExecute method. That CanExecute method will then be used to determine whether Button should be enabled or not. - XAMlMAX