我有一个数据网格,其中有一列即数量,当用户按下表格上的“编辑”按钮时,用户只能输入数量(可编辑),这样就像只读字段一样。
如何做到这一点?
答案 0 :(得分: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>
更新&gt;&gt;&gt;
如果您使用课程在DataGrid
中显示您的项目(这总是一个好主意),那么有一个简单的解决方案。您可以向bool
属性添加额外的Bind
属性,并且每次IsReadOnly
属性更改时都可以更新bool
值:< / p>
Quantity
和XAML:
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"); }
}
如果这样做,只要<ToggleButton Name="EditButton" Content="Edit" />
...
<DataGrid ItemsSource="{Binding YourCollection}">
<DataGrid.Columns>
...
<DataGridTextColumn Header="Qty" IsReadOnly="{Binding IsQtyReadOnly}"
Binding="{Binding Qty}" />
...
</DataGrid.Columns>
</DataGrid>
属性值发生变化,IsQtyReadOnly
属性就会自动更新。
答案 1 :(得分:0)
您需要该按钮的事件处理程序:
private void OnClick(object sender, RoutedEventArgs e)
{
QtyColumn.IsReadOnly = !QtyColumn.IsReadOnly;
}