Если вы используете CheckBox
или ToggleButton
, то вы можете сделать это с только Binding
, не требуя какую-либо коду позади:
<ToggleButton Name="EditButton" Content="Edit" />
...
<DataGrid ItemsSource="{Binding YourCollection}">
<DataGrid.Columns>
...
<DataGridTextColumn Header="Quantity" IsReadOnly="{Binding IsChecked,
ElementName=EditButton}" Binding="{Binding Quantity}" />
...
</DataGrid.Columns>
</DataGrid>
ОБНОВЛЕНИЕ >>>
Если лет u используйте класс для отображения ваших элементов в DataGrid
(что всегда является хорошей идеей), тогда есть простое решение. Вы можете просто добавить дополнительный bool
свойство Bind
к IsReadOnly
собственности, и вы можете обновить значение bool
каждый раз, когда Quantity
свойство изменяется:
public string SerialNo
{
get { return serialNo; }
set
{
serialNo = value;
NotifyPropertyChanged("SerialNo");
// Update new property
IsQtyReadOnly = serialNo == "The read only value";
}
}
public bool IsQtyReadOnly // <<< New property
{
get { return isQtyReadOnly; }
set { isQtyReadOnly= value; NotifyPropertyChanged("IsQtyReadOnly"); }
}
И в XAML:
<ToggleButton Name="EditButton" Content="Edit" />
...
<DataGrid ItemsSource="{Binding YourCollection}">
<DataGrid.Columns>
...
<DataGridTextColumn Header="Qty" IsReadOnly="{Binding IsQtyReadOnly}"
Binding="{Binding Qty}" />
...
</DataGrid.Columns>
</DataGrid>
Если вы Таким образом, свойство IsQtyReadOnly
будет автоматически обновляться при изменении значения свойства SerialNo
.
как я могу получить QtyColumn в onClick его только ячейку справа? – Mussammil
Нет, это столбец с именем Qty. – hbsrud