2013-11-22 3 views
0

У меня есть datagrid с одним столбцом, а именно Qty, где пользователь может вводить только qty (редактируемый), когда пользователь нажимает кнопку «Редактировать» в форме, другой, как ее позиция, как поле только для чтения.wpf toggle datagridcell только для чтения

Как это сделать?

ответ

0

Вам нужен обработчик событий для этой кнопки:

private void OnClick(object sender, RoutedEventArgs e) 
{ 
    QtyColumn.IsReadOnly = !QtyColumn.IsReadOnly; 
} 
+0

как я могу получить QtyColumn в onClick его только ячейку справа? – Mussammil

+0

Нет, это столбец с именем Qty. – hbsrud

1

Если вы используете 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.

+0

в моем требовании У меня есть столбец DataGridComboBox, а именно SerialNo, если пользователь выбирает одно значение из поля со списком, тогда поле Qty становится readonly = true, иначе readonly = false – Mussammil

Смежные вопросы